是否有可能刪除xml文件的根元素? 我怎樣才能在Java中做到這一點? 我的XML文件是這樣的:如何從xml文檔中刪除根元素?
<root>
<body>
....
</body>
</root>
我已經試着用SAX來分析它,並確定我實現這一點,但我發現SAX不允許編寫代碼,XML文件(我讀的是真的很難)。 你有什麼想法如何從根標籤獲取內容並將其寫入以body爲父項的新文檔?
是否有可能刪除xml文件的根元素? 我怎樣才能在Java中做到這一點? 我的XML文件是這樣的:如何從xml文檔中刪除根元素?
<root>
<body>
....
</body>
</root>
我已經試着用SAX來分析它,並確定我實現這一點,但我發現SAX不允許編寫代碼,XML文件(我讀的是真的很難)。 你有什麼想法如何從根標籤獲取內容並將其寫入以body爲父項的新文檔?
如果你只需要剝離<root>
和</root>
標籤不需要解析使用SAX等XML文件就分析它的字符串和空字符串替換標籤。
一個非常非常簡單的例子可能是:
String str = "<root><body></body></root>";
String str2 = str.replace("<root>", "").replace("</root>", "");
System.out.println(str2);
當我在一個語句中看到帶有正則表達式的XML或HTML時,我總是指[this](http://stackoverflow.com/a/1732454/5091346)答案。 –
@AndriiAbramov從技術上講,這段代碼沒有使用正則表達式,但它仍然使用盲字符串替換,這對於XML和HTML來說是一個非常糟糕的想法,同樣的原因正則表達式是一個非常糟糕的主意。 – VGR
感謝您指出我的答案是錯誤的,但是由於沒有使用正則表達式,請詳細說明爲什麼剝離「
一個爲您解決問題的方法是使用解析可以在GitHub上的Scilca XML Progession包記錄。您可以獲取子元素的結構,然後保存它。
import org.scilca.sxp.*;
XMLConnection xc = new XMLConnection("@filepath");
List<Node> allBodies = xc.searchMatches("body"); // as body is second tag it will be first in list
Node neededNode = allBodies.get(0);
//Writing Portion
Document data = new Document(neededNode);
XMLWriter xw = data.getWriter();
xw.saveXML("@filepath2");
SAX是非常低級的。您應該使用DOM來代替。首先閱讀[DocumentBuilderFactory](http://docs.oracle.com/javase/8/docs/api/javax/xml/parsers/DocumentBuilderFactory.html),然後按照指向DocumentBuilder和Document的鏈接。 – VGR
[如何用DOM刪除XML文檔的根節點]可能的副本(http://stackoverflow.com/questions/4198967/how-to-remove-the-root-node-of-an-xml-document -with-dom) –