2013-04-18 26 views
-6

我知道我不應該使用Regex來更新xml。但根據要求,我必須找到基於正則表達式的元素並替換它的值。
我正在記錄調度程序servlet中的所有HTTP請求並將其保存到一個文件中。在重播它時,我可能需要重新創建一個xml。
我不想將該特定的xml轉換爲Document,解析並更新它然後將其轉換回字符串。這就是爲什麼我想以String格式編輯xml的原因。

元素名稱及其新值將作爲我的輸入。 所以
用正則表達式找到一個xml元素並替換它的值

public void findAndReplace(String xml, String elementName, String newValue) 
{ 
String regex = '/<'+elementName+'></'+elementName+'>'; 
String updatedElement = '/<'+elementName+'>'+newValue+'</'+elementName+'>' 

String updatedXML = xml.replaceFirst(regex, updatedElement); 
} 
+2

使用XML解析器。 *「但按照要求」*完全白癡達到了這個要求?他們應該被吸引和分配。 –

+0

如果你想查找XML中使用XPath的東西 – Eugene

+0

@AndrewThompson我實際上記錄了一個文件中的所有HTTP請求xmls,並且可能必須更新其中的一個或兩個。我們不想將每個xml轉換爲Document,以便它們可以編輯。 –

回答

1

你不必爲了改變一個XML docuemnt創建Document。您可以非常輕鬆地設置流式XML解析器,以非常高效的方式執行此操作。看看javax.xml.stream包。