2012-04-09 49 views
1

我有一個XML文件,我想要格式化XML文件以刪除標籤,如「<scientific_max></scientific_max>」。 我使用的代碼,但沒有奏效使用正則表達式刪除不必要的XML標記

String regex = "<([a-z_]+)></($1)>"; 
result = result.replaceAll(regex, ""); 

一個愉快的一天有!

+8

與XML和HTML一樣,不要使用regexp來做到這一點。對於XML,使用任何可用的XML庫來執行此操作。即使是SAXParser也可以完成這項工作。正則表達式不適合! – 2012-04-09 12:18:45

+0

對,圖書館提供更好的支持。例如,JAXB會爲您提供一個包含在給定節點上定義的所有XML屬性的純對象。 – Dan 2012-04-09 12:21:06

+0

事實上,我想使用正則表達式,因爲這個過程不是太長,我沒有太多的迭代要做。而且,使用另外的第三個庫可能會使得該過程不夠好。 – 2012-04-09 12:22:20

回答

1

如果你堅持做這樣的任務正則表達式,你可能想知道back references在Java,而不是$n表示爲\n

String regex = "<([a-z_]+)></\\1>"; 
result = result.replaceAll(regex, ""); 
+0

我不敢說這個正則表達式不會返回預期的結果。事實上,它不符合我的Java字符串。 – 2012-04-09 12:34:39

+1

@bouhmid_tun適合我。你的字符串是什麼?也許一些空白或標籤之間的換行符?這就是爲什麼Guillaume和其他人指出正則表達式可能不是解析XML的好主意。 – Howard 2012-04-09 12:35:59

+0

我的XML文件中包含這樣的字符: PS:我不能粘貼所有的文件空間不足,但這個數據可以給你一個IDEO我的文件怎麼好像。 – 2012-04-09 12:49:02

1

Java是不是最好的,當涉及到模式匹配&字符串替換的文件,如果你正在考慮,如果你想永久改變爲xml你可以使用sed的

此提取基於標籤的數據,使用JAXB

sed -i/< \ * scientific_max> * $ //'input_xml.xml

相關問題