2012-12-25 152 views

回答

6

正則表達式匹配:

(<\s*MessageParam[^>]*)/\s*> 

替換字符串:

$1></MessageParam> 

您可能需要轉義\字符(在其之前添加一個額外的\)。

我假設>沒有出現在屬性的值中,並且XML是有效的。

更廣義的版本:

正則表達式匹配:

<\s*([^\s>]+)([^>]*)/\s*> 

替換字符串:

<$1$2></$1> 

對於這一個,我不知道,我所做的所有假設的。但我仍然認爲>沒有出現在屬性的值中,並且XML是有效的。

+0

我不確定XML解析器是否可以更改結束標記的類型。如果可能的話,最好使用XML解析器。 – nhahtdh

+0

你也可以單獨捕獲'MessageParam'使其得到推廣。 –

+0

@RohitJain:編輯。謝謝。 – nhahtdh

4

正則表達式

<(\w+)(.+?)/> 

<$1$2></$1> 
+0

這真的對我有幫助,因爲接受的答案產生了一些偶爾的奇怪結果 – jcvandan

+0

不幸的是,這對嵌套的DOM元素不起作用。 – jtheletter

+0

完美!正是我在找什麼。只需在Notepad ++中使用此查找和替換功能,就可以完成:) – Pixipulp

0
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); 
    } 
} 
+0

String類中的一個簡單'replaceAll'將會執行,不知道爲什麼要經歷編寫模式/匹配器的所有麻煩循環。 – nhahtdh

+0

哦,我的愚蠢的答案:( – prageeth

+0

nhahtdh - 我不明白如何replaceAll將有助於如果我有多個字符串與不同'desc' – user864309