偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

淺談Java開源XML工具包dom4j

開發(fā)
dom4j是一個(gè)使用簡(jiǎn)便的開源類庫(kù),專門用來(lái)在Java平臺(tái)上處理XML,XPath和XSLT,該類庫(kù)使用了Java Collections Framework,完全支持DOM,SAX和JAXP。

dom4j為一個(gè)XML文檔在內(nèi)存中創(chuàng)建了一個(gè)樹對(duì)象模型。 它提供了一組強(qiáng)大易用的API,通過XPath和XSLT來(lái)處理、操縱或者遍歷XML文件,此外其中還集成了SAX、JAXP和DOM。

為了提供高度可配置的實(shí)現(xiàn)策略,dom4j基于接口設(shè)計(jì)。只需要提供一個(gè)DocumentFactory實(shí)現(xiàn),您就可以創(chuàng)建您自己的XML樹實(shí)現(xiàn)。這種設(shè)計(jì),使得在擴(kuò)展dom4j以定制您需要的特性時(shí),能非常簡(jiǎn)單地重用dom4j的代碼。

本文檔將通過代碼實(shí)例的方式為您提供一個(gè)dom4j的實(shí)踐指南。在實(shí)驗(yàn)室項(xiàng)目中,這個(gè)開源工具包給我的工作帶來(lái)了很大的便利,在這篇文章中,我將對(duì)項(xiàng)目中用到dom4j完成的任務(wù)做個(gè)總結(jié),以期和互聯(lián)網(wǎng)上的眾多文檔能夠互相補(bǔ)充。

讀取XML文件

一般性地讀取XML文件,在dom4j中操作起來(lái)將非常簡(jiǎn)單。

public void readXMLSimple(File file) throws DocumentException{
    //使用SAXReader讀取XML文件
    SAXReader sr = new SAXReader();
    Document doc = sr.read(file);

    //使用XPath遍歷一個(gè)XML文件的結(jié)點(diǎn)
    Element root = doc.getRootElement();
    List entryList1 = root.selectNodes("entry");
    //或者
    List entryList2 = doc.selectNodes("/feed/entry");
}

創(chuàng)建一個(gè)XML文檔并記錄到磁盤上

創(chuàng)建一個(gè)XML文件,并將其寫到磁盤上,也可以使用非常簡(jiǎn)介的代碼來(lái)完成,假設(shè)我們將上一個(gè)代碼范例中得到的entry節(jié)點(diǎn)的列表,插入到一個(gè)新建的XML文檔中,然后使用優(yōu)美的縮進(jìn)格式保存在磁盤上,我們可以像下面這樣編碼:

public void createXMLSimple(List entries, File f)
        throws FileNotFoundException,
               UnsupportedEncodingException,
               IOException{
    Document doc = DocumentHelper.createDocument();
    doc.addElement("feed");
    Element root = doc.getRootElement();
    Iterator i = entries.iterator();
    while(i.hasNext()){
       //從別的Dom中得到的Element都有其本身
        //的root,所以必須創(chuàng)建副本才能插入另一個(gè)doc內(nèi)
        root.add(((Element)i.next()).createCopy());
    }
    FileOutputStream os = new FileOutputStream(f);
    OutputFormat of = OutputFormat.createPrettyPrint();
    XMLWriter xmlw = new XMLWriter(os,of);
    xmlw.write(doc);
}

讀取一個(gè)根節(jié)點(diǎn)帶有默認(rèn)Namespace的XML

如果我們剛才的代碼范例讀取的是符合Atom1.0標(biāo)準(zhǔn)的Feed,那么,根節(jié)點(diǎn)帶有default namespace的http://www.w3.org/2005/Atom。讀取這樣的XML文檔稍微有點(diǎn)麻煩,網(wǎng)上的代碼很多,但是很多都不好用,我總結(jié)下來(lái),基本上沒有辦法像你想的那么干凈。

public void treatDefaultNamespace(File f)
        throws DocumentException{
    SAXReader sr = new SAXReader();
    Map ns = new HashMap();
    ns.put("atom", "http://www.w3.org/2005/Atom");
    sr.getDocumentFactory().setXPathNamespaceURIs(ns);
    //Element接口支持迭代器,在這里順便展示一下
    Element root = sr.read(f).getRootElement();
    Iterator i = root.elementIterator();
    while(i.hasNext()){
        Element e = (Element) i.next();
        //一旦指定了Namespace,則使用XPath的時(shí)候必須帶上
         //即便是默認(rèn)的Namespace也一樣,不過前面那個(gè)名字
         //可以盡可能寫得短,編碼的時(shí)候方便,比如改成a
        String title = e.selectSingleNode("atom:title").getText();
        System.out.println(title);
    }
}

創(chuàng)建一個(gè)根節(jié)點(diǎn)帶有默認(rèn)Namespace的XML

創(chuàng)建一個(gè)帶有default namespace的XML的方法,相當(dāng)?shù)膖ricky,因?yàn)槟銊?chuàng)建一個(gè)Element的方法有很多種,可以通過add方法,默認(rèn)的建,也可以使用DocumentHelper對(duì)象來(lái)創(chuàng)建,不過,每種方法給你的結(jié)果都不同,往往讓你大吃一驚。其他的那些方法,和得到的多種結(jié)果,大家可以在網(wǎng)上看,很多。我就提供一個(gè)能創(chuàng)建“干凈”的XML的代碼范例。

public void createXMLWithDefaultNamespace(List entries){
    Document d = DocumentHelper.createDocument();
    d.addElement("feed","http://www.w3.org/2005/Atom");
    Element root = d.getRootElement();
    //省略迭代entries代碼
    root.addElement("title").add(DocumentHelper.createCDATA(title));
    root.addElement("id").add(DocumentHelper.createText(guid));
    root.addElement("category").add(DocumentHelper.createText(category));
    root.addElement("link").add(DocumentHelper.createText(permalink));
    root.addElement("updated").add(DocumentHelper.createText(updated));
}

最后,羅列一下上文中用到的所有對(duì)象所在的包,沒有列出的在J2SE內(nèi)。

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;

【編輯推薦】

  1. JavaFX HTTP網(wǎng)絡(luò)和XML分析
  2. 詳解Java解析XML的四種方法
  3. XML新手入門 創(chuàng)建構(gòu)造良好的XML
責(zé)任編輯:彭凡 來(lái)源: sexywp.com/
相關(guān)推薦

2009-06-23 14:17:00

Dom4j

2011-04-13 09:30:28

dom4j

2012-05-30 10:03:57

dom4jXML亂碼

2024-07-22 08:16:15

2013-05-30 15:02:33

dom4j反射

2009-11-17 14:39:59

PHP工具包

2016-02-16 13:21:33

2019-05-13 09:22:21

微軟開源機(jī)器學(xué)習(xí)

2009-06-18 15:42:15

J2EE架構(gòu)

2021-05-14 15:14:20

LibreOfficeGTK4式具包

2021-03-16 14:44:30

工具代碼開發(fā)

2018-05-03 09:03:16

微軟工具包Windows

2012-05-08 11:03:28

Coding4Fun

2016-01-27 13:34:07

開源語(yǔ)音識(shí)別CNTK

2022-04-09 10:02:59

HTTPLInux開源

2014-12-31 14:09:23

xml解析

2011-08-31 14:15:54

JavaJodd

2012-02-16 09:42:41

Javalambdaj

2015-11-11 14:01:26

微軟開源分布式

2018-12-27 10:52:10

Facebook 開發(fā)開源
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)