2012-10-28 61 views
4

(免責聲明:在RingoJS中使用Rhino)如何將XML節點(字符串)追加到現有的XML元素節點(僅使用Java內建)?

假設我有一個帶有元素的文檔,我沒有看到如何將節點作爲字符串附加到此元素。爲了解析字符串XML節點,然後將它們添加到節點,我試圖用DocumentFragment的,但我無法得到任何地方。總之,我需要的東西容易,因爲.NET的.innerXML但它不是在的Java API。

var dbFactory = javax.xml.parsers.DocumentBuilderFactory.newInstance(); 
var dBuilder = dbFactory.newDocumentBuilder(); 
var doc = dBuilder.newDocument(); 
var el = doc.createElement('test'); 
var nodesToAppend = '<foo bar="1">Hi <baz>there</baz></foo>'; 
el.appendChild(???); 

如何在不使用任何第三方庫的情況下做到這一點?

[編輯]這是不是在明顯的例子,但我不應該知道變量的內容「nodesToAppend」。所以,請不要將我指向關於如何在xml文檔中創建元素的教程。

回答

8

你可以在Java中做到這一點 - 你應該能夠導出犀牛相當於:

DocumentBuilderFactory dbFactory = javax.xml.parsers.DocumentBuilderFactory.newInstance(); 
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder(); 
Document doc = dBuilder.newDocument(); 
Element el = doc.createElement('test'); 
doc.appendChild(el); 


String xml = "<foo bar=\"1\">Hi <baz>there</baz></foo>"; 
Document doc2 = builder.parse(new ByteArrayInputStream(xml.getBytes())); 

Node node = doc.importNode(doc2.getDocumentElement(), true); 
el.appendChild(node); 

由於docdoc2是兩個不同的Document S上的訣竅是從一個文檔導入節點另外,它與importNode API上述

+0

非常好的答案,非常感謝!嘗試從其他文檔中引入節點時,我錯過了importNode。對不起,我無法答覆,但我沒有足夠的聲譽:-) – user1780705

0

我覺得你的問題是這樣的問題並沒有答案就可以了: Java: How to read and write xml files?

或看到這個鏈接http://www.mkyong.com/java/how-to-create-xml-file-in-java-dom/

+0

號我想通了如何解析XML文件與Java但對我來說,我只能堅持從字符串追加一組元素來完成的。我試圖使用StringReader和InputSource創建另一個文檔,以便使用該字符串作爲源。但我不能將元素從文檔移動到另一個文檔。 – user1780705