我在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