国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

Java中更新XML文檔的常用方法

2019-11-17 06:11:08
字體:
來源:轉載
供稿:網友

  本文簡要的討論了java語言編程中更新xml文檔的四種常用方法,并且分析這四種方法的優劣。其次,本文還對如何控制Java程序輸出的XML文檔的格式做了展開論述。

  JAXP是Java API for XML PRocessing的英文字頭縮寫,中文含義是:用于XML文檔處理的使用Java語言編寫的編程接口。JAXP支持DOM、SAX、XSLT等標準。為了增強JAXP使用上的靈活性,開發者非凡為JAXP設計了一個Pluggability Layer,在Pluggability Layer的支持之下,JAXP既可以和具體實現DOM API、SAX API 的各種XML解析器(XML Parser,例如Apache Xerces)聯合工作,又可以和具體執行XSLT標準的XSLT處理器(XSLT Processor,例如Apache Xalan)聯合工作。

  應用Pluggability Layer的好處在于:我們只需要熟悉JAXP各個編程接口的定義即可,而不需要對所采用的具體的XML解析器、XSLT處理器有很深入的了解。比如在某個Java程序中,通過JAXP調用XML解析器Apache Crimson對XML文檔進行處理,假如我們希望使用別的XML解析器(比如Apache Xerces),以便提高該程序的性能,那么原程序代碼可能不需要任何改變,直接就可以使用(你所需要做的事情只是將包含Apache Xerces代碼的jar文件加入到環境變量CLASSPATH中,而將包含Apache Crimson代碼的jar文件在環境變量CLASSPATH中刪除)。

  目前JAXP已經應用的十分普遍了,可以說是Java語言中處理XML文檔的標準API。有些初學者在學習使用JAXP的過程中,經常會提出這樣的問題:我編寫的程序對DOM Tree做了更新,但是當程序退出以后,原始的XML文檔并沒有改變,還是老樣子,如何實現對原始XML文檔和DOM Tree的同步更新呢?咋一看來,在JAXP中似乎沒有提供相應的接口/方法/類,這是很多初學者都感到困惑的問題。

  本文的主旨就在于解決這個問題,簡單的介紹幾種常用的同步更新原始XML文檔和DOM Tree的方法。為了縮小討論的范圍,本文所涉及的XML解析器僅包括Apache Crimson和Apache Xerces,而XSLT處理器僅僅使用Apache Xalan。

  方法一:直接讀寫XML文檔

  這也許是最笨最原始的辦法了。當程序獲取DOM Tree之后,應用DOM模型的Node接口的各個方法對DOM Tree進行更新,下一步應該對原始的XML文檔進行更新了。我們可以運用遞歸的辦法或者是應用TreeWalker類,遍歷整個DOM Tree,與此同時,將DOM Tree的每一個節點/元素依次寫入到預先打開的原始XML文檔中,當DOM Tree被遍歷完全之后,DOM Tree和原始的XML文檔就實現了同步更新。實際中,這個方法極少使用,不過假如你要編程實現自己的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):


  public void write (OutputStream out) throws IOException
  public void write (Writer out) throws IOException
  public void write (Writer out, String encoding) throws IOException






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


  String name="fancy";
  DocumentBuilder parser;
  DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 宁武县| 吴江市| 孟津县| 南充市| 普格县| 岫岩| 乐平市| 连云港市| 通渭县| 睢宁县| 阳原县| 镶黄旗| 上饶县| 双鸭山市| 仙游县| 柳河县| 延长县| 札达县| 龙泉市| 紫云| 滕州市| 柞水县| 扎赉特旗| 沙湾县| 万全县| 永新县| 上林县| 富平县| 会泽县| 青浦区| 徐水县| 巴塘县| 麻城市| 浦江县| 鄂托克旗| 怀化市| 鹤山市| 太白县| 平利县| 彰化县| 吕梁市|