java更新XML的常用方法?

Tags: 文件,

下面介紹一下​Java語言程式設計中更新XML文件的三種常用方法,並且分析這三種方法的優劣。其次,本文還對如何控制Java程式輸出的XML文件的格式做了展開論述。 希望你找到更適合自己也更加適合系統的方法。

方法/步驟

直接讀寫XML文件

  這也許是最笨最原始的辦法了。當程式獲取DOM Tree之後,應用DOM模型的Node介面的各個方法對DOM Tree進行更新,下一步應該對原始的XML文件進行更新了。我們可以運用遞迴的辦法或者是應用TreeWalker類,遍歷整個DOM Tree,與此同時,將DOM Tree的每一個節點/元素依次寫入到預先開啟的原始XML文件中,當DOM Tree被遍歷完全之後,DOM Tree和原始的XML文件就實現了同步更新。實際中,這個方法極少使用,不過如果你要程式設計實現自己的XML解析器,這種方法還是有可能用得上的。

java更新XML的常用方法

使用XmlDocument類

  使用XmlDocument類?JAXP中分明沒有這個類呀!是不是作者搞錯了?沒有錯!就是使用XmlDocument類,確切的說,是使用XmlDocument類的write()方法。

  在上文已經提到過,JAXP可以和各種各樣的XML解析器聯合使用,這次我們選用的XML解析器是Apache Crimson。XmlDocument(org.apache.crimson.tree.XmlDocument)是Apache Crimson的一個類,並不包含於標準的JAXP中,難怪在JAXP的文件中找不到XmlDocument類的芳蹤呢。現在問題出來了,如何應用XmlDocument類來實現更新XML文件的功能?在XmlDocument類中提供了下面三個write()方法(根據Crimson最新的版本------Apache Crimson 1.1.3):

  上述三個write()方法的主要作用就是輸出DOM Tree中的內容到特定的輸出介質中,比如檔案輸出流、應用程式控制臺等等。那麼又如何使用上述三個write()方法呢?請看下面的Java程式程式碼片斷:

String name="fancy";
DocumentBuilder parser;
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
try
{
parser = factory.newDocumentBuilder();
Document doc = parser.parse("user.xml");
Element newlink=doc.createElement(name);
doc.getDocumentElement().appendChild(newlink);
((XmlDocument)doc).write(new FileOutputStream(new File("xuser1.xml")));
}
catch (Exception e)
{
//to log it
}

java更新XML的常用方法

使用Xalan XML Serializer

  方法四其實是方法三的一個變種,它需要Apache Xalan和Apache Xerces的支援才能夠執行。例子程式碼如下所示:

  這個方法不太常用,而且似乎有點畫蛇添足,所以我們就不展開討論了。完整的例子請參考下列檔案: AddRecord4.java(見附件)、user.xml(見附件)。該例子的執行環境為:Windows XP Professional、JDK 1.3.1。為了能夠正常編譯執行AddRecord4.java這個程式,你需要去下載安裝Apache Xalan和Apache Xerces。

相關問題答案