我有一個XML文件,我想要格式化XML文件以刪除標籤,如「<scientific_max></scientific_max>
」。 我使用的代碼,但沒有奏效使用正則表達式刪除不必要的XML標記
String regex = "<([a-z_]+)></($1)>";
result = result.replaceAll(regex, "");
一個愉快的一天有!
我有一個XML文件,我想要格式化XML文件以刪除標籤,如「<scientific_max></scientific_max>
」。 我使用的代碼,但沒有奏效使用正則表達式刪除不必要的XML標記
String regex = "<([a-z_]+)></($1)>";
result = result.replaceAll(regex, "");
一個愉快的一天有!
如果你堅持做這樣的任務正則表達式,你可能想知道back references在Java,而不是$n
表示爲\n
:
String regex = "<([a-z_]+)></\\1>";
result = result.replaceAll(regex, "");
我不敢說這個正則表達式不會返回預期的結果。事實上,它不符合我的Java字符串。 – 2012-04-09 12:34:39
@bouhmid_tun適合我。你的字符串是什麼?也許一些空白或標籤之間的換行符?這就是爲什麼Guillaume和其他人指出正則表達式可能不是解析XML的好主意。 – Howard 2012-04-09 12:35:59
我的XML文件中包含這樣的字符:
Java是不是最好的,當涉及到模式匹配&字符串替換的文件,如果你正在考慮,如果你想永久改變爲xml你可以使用sed的
此提取基於標籤的數據,使用JAXB
sed -i/< \ * scientific_max> * $ //'input_xml.xml
與XML和HTML一樣,不要使用regexp來做到這一點。對於XML,使用任何可用的XML庫來執行此操作。即使是SAXParser也可以完成這項工作。正則表達式不適合! – 2012-04-09 12:18:45
對,圖書館提供更好的支持。例如,JAXB會爲您提供一個包含在給定節點上定義的所有XML屬性的純對象。 – Dan 2012-04-09 12:21:06
事實上,我想使用正則表達式,因爲這個過程不是太長,我沒有太多的迭代要做。而且,使用另外的第三個庫可能會使得該過程不夠好。 – 2012-04-09 12:22:20