我在RegEx中并不擅长。有人可以帮我向Java RegEx将自我关闭的xml标签转换为关闭标签
<MessageParam name="0" desc="Source Queue"></MessageParam>
使用正则表达式
代之以<MessageParam name="0" desc="Source Queue" />
我在RegEx中并不擅长。有人可以帮我向Java RegEx将自我关闭的xml标签转换为关闭标签
<MessageParam name="0" desc="Source Queue"></MessageParam>
使用正则表达式
代之以<MessageParam name="0" desc="Source Queue" />
正则表达式匹配:
(<\s*MessageParam[^>]*)/\s*>
替换字符串:
$1></MessageParam>
您可能需要转义\
字符(在其之前添加一个额外的\
)。
我假设>
没有出现在属性的值中,并且XML是有效的。
更广义的版本:
正则表达式匹配:
<\s*([^\s>]+)([^>]*)/\s*>
替换字符串:
<$1$2></$1>
对于这一个,我不知道,我所做的所有假设的。但我仍然认为>
没有出现在属性的值中,并且XML是有效的。
正则表达式
<(\w+)(.+?)/>
与
<$1$2></$1>
这真的对我有帮助,因为接受的答案产生了一些偶尔的奇怪结果 – jcvandan
不幸的是,这对嵌套的DOM元素不起作用。 – jtheletter
完美!正是我在找什么。只需在Notepad ++中使用此查找和替换功能,就可以完成:) – Pixipulp
public static void format(String xmlNode) {
Pattern patt = Pattern.compile("(<MessageParam[^>]*)(\\s*/>)");
Matcher mattcher = patt.matcher(xmlNode);
while (mattcher.find()){
String result = mattcher.replaceAll("$1></MessageParam>");
System.out.println(result);
}
}
String类中的一个简单'replaceAll'将会执行,不知道为什么要经历编写模式/匹配器的所有麻烦循环。 – nhahtdh
哦,我的愚蠢的答案:( – prageeth
nhahtdh - 我不明白如何replaceAll将有助于如果我有多个字符串与不同'desc' – user864309
代替你应该尝试使用JDOM来代替。 – ecbrodie