2013-07-04 104 views
1
import java.io.ByteArrayInputStream; 
import java.io.IOException; 

import javax.xml.parsers.DocumentBuilder; 
import javax.xml.parsers.DocumentBuilderFactory; 
import javax.xml.parsers.ParserConfigurationException; 

import org.w3c.dom.Document; 
import org.w3c.dom.Element; 
import org.w3c.dom.NodeList; 
import org.xml.sax.SAXException; 

public class modifyXML { 

    public static void modify(StringBuffer XMLBuffer) throws IOException, ParserConfigurationException, SAXException{ 

     DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); 
     DocumentBuilder db = dbf.newDocumentBuilder(); 
     Document doc = db.parse(new ByteArrayInputStream(XMLBuffer.toString().getBytes())); 
     Element rootNode = doc.getDocumentElement(); 

     NodeList priceList = rootNode.getElementsByTagName("price"); 
     priceList.item(0).setTextContent("190"); 

     NodeList inStockList = rootNode.getElementsByTagName("id_product_attribute"); 
     inStockList.item(0).setTextContent("100"); 



    } 
} 

我試圖修改一個XML文件,然後將它們放在一起。我已經使用了修改部分進行了管理,但我無法將XML文件重新放在一起。結果可以是一個String或一個StringBuffer。Java XML修改

什麼是最好/最簡單的方法來做到這一點?

+0

請告訴我你的代碼的相關性?您的問題根本沒有提及它...... –

+0

橫向暗示:使用一種不會掩蓋此功能的非常愚蠢的XML API,如JDOM。 (不,我不是標準DOM的粉絲。) – millimoose

回答

2

使用Transformer,如WhiteFang34XML Document to String中所述。

官方Java教程:Writing Out a DOM as an XML File(只是讓StreamResult裹別的東西,如StringWriter)。

更新:

Less known, shorter alternative通過ykaganovich基於加載/保存對象:

+2

對於漂亮的印刷的XML(縮進)看看[這裏](http://stackoverflow.com/questions/139076/how-to-pretty-print-xml-從-java的)。不要看所選的答案,而是用'TransformerFactory'。 –

+0

WhiteFang發佈的內容非常清晰和直接,我建議。謝謝您的回答。 – fusi0n