2011-09-16 35 views
0

我有一個要求,即我想在xhtml文件中添加正文內容。我有一個空身標記的xhtml文件。所以,我想添加使用的解析器通過Java的主體內容,所以我做了一些事情像下面,但其沒有工作..使用DOM將節點值添加到xhtml中使用DOM

誰能告訴原因

org.w3c.dom.Document document=null; 
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); 
document = factory.newDocumentBuilder().parse(newFile); 
NodeList list =document.getElementsByTagName("body");    
for (int i = 0; i < list.getLength(); i++) {      
Node addBody = list.item(i); 

addBody.setTextContent(bodyContent.toString()); 
System.out.println("text content"+addBody.getTextContent()); 
} 

中的BodyContent我有一些我想要追加在newFile內部的信息。即使我使用setNodeValue()方法,它也不適合我。任何事情都是錯的?

我將addBody的值設置爲'[body:null]';如何指向該身體節點?

請給我任何指針..

在此先感謝..

+0

「不工作」是什麼意思?例外?如果是這樣,什麼是堆棧跟蹤?如果沒有,你期望什麼,你觀察到什麼? –

+0

我沒有得到任何異常,但它無法將內容添加到正文中,但我期望在正文標記中添加內容 – rajesh

+0

您的代碼正常工作:如果我在空文本的HTML文件上使用它標籤,我看到由System.out.println行顯示的新文本內容。 bodyContent.toString()的值是什麼,以及System.out.println行在屏幕上打印的是什麼? –

回答

0

節點值?你是不是指Text Node? 如果是這樣,你應該創建一個新的文本節點並將其附加到addBody。您可以在TextNode對象中調用setNodeValue來設置文本內容。 請檢查http://download.oracle.com/javase/1.4.2/docs/api/org/w3c/dom/Document.html#createTextNode%28java.lang.String%29

+0

在TestNode對象沒有像setNodeValue方法,我喜歡這個TextNode t = new TextNode(「」,「 rajesh

+0

我不想創建新的Textnode,我想將數據追加到文件中的現有節點。有什麼解決方案請告訴我嗎? – rajesh

1

當您修改dom樹時,您在內存中修改它,但該dom樹來自的原始文件不受影響。您需要將修改後的dom樹寫入該文件,以便保留您在內存中所做的更改。

與在StringBuilder中讀取整個文件完全一樣。修改StringBuilder不會奇蹟般地將新內容寫入文件。

查看http://java.sun.com/j2ee/1.4/docs/tutorial/doc/JAXPXSLT4.html例如編寫DOM樹到文件的代碼。

+0

謝謝Nizet,這很有用,我可以追加到身體。 – rajesh