成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Dom4j 讀寫XML簡介

megatron / 1561人閱讀

摘要:原文鏈接修改部分過時(shí)內(nèi)容,添加部分示例要使用讀寫文檔需要先下載包官方網(wǎng)站在目前最新包下載地址解開后有兩個(gè)包僅操作文檔的話把加入工程就可以了如果需要使用的話還需要加入包以下是相關(guān)操作一對(duì)象相關(guān)讀取文件獲得對(duì)象解析形式的文本得到對(duì)象主動(dòng)創(chuàng)

原文鏈接:http://www.blogjava.net/junglesong/archive/2008/02/21/181196.html

修改部分過時(shí)內(nèi)容,添加部分示例.

要使用 dom4j 讀寫 XML 文檔,需要先下載dom4j包,dom4j官方網(wǎng)站在 http://www.dom4j.org/
目前最新dom4j包下載地址:http://nchc.dl.sourceforge.net/sourceforge/dom4j/dom4j-1.6.1.zip

解開后有兩個(gè)包,僅操作XML文檔的話把 dom4j-1.6.1.jar 加入工程就可以了,如果需要使用 XPath 的話還需要加入包 jaxen-1.1.6.jar.

以下是相關(guān)操作:

一.Document對(duì)象相關(guān)

讀取XML文件,獲得document對(duì)象.

SAXReader reader = new SAXReader();
Document  document = reader.read(new File("input.xml"));

解析XML形式的文本,得到document對(duì)象.

String text = "";
Document document = DocumentHelper.parseText(text);

主動(dòng)創(chuàng)建document對(duì)象.

Document document = DocumentHelper.createDocument();
Element root = document.addElement("members");// 創(chuàng)建根節(jié)點(diǎn)

二.節(jié)點(diǎn)相關(guān)

獲取文檔的根節(jié)點(diǎn).

Element rootElm = document.getRootElement();

取得某節(jié)點(diǎn)的單個(gè)子節(jié)點(diǎn).

Element memberElm=root.element("member");// "member"是節(jié)點(diǎn)名

取得節(jié)點(diǎn)的文字

String text=memberElm.getText();

也可以用:

String text=root.elementText("name");//這個(gè)是取得根節(jié)點(diǎn)下的 name 子節(jié)點(diǎn)的文字.

取得某節(jié)點(diǎn)下名為"member"的所有字節(jié)點(diǎn)并進(jìn)行遍歷.

List nodes = rootElm.elements("member");

for (Iterator it = nodes.iterator(); it.hasNext();) {
   Element elm = (Element) it.next();
   // do something
}

對(duì)某節(jié)點(diǎn)下的所有子節(jié)點(diǎn)進(jìn)行遍歷.

for(Iterator it=root.elementIterator();it.hasNext();){
        Element element = (Element) it.next();
        // do something
}

在某節(jié)點(diǎn)下添加子節(jié)點(diǎn).

Element ageElm = newMemberElm.addElement("age");

設(shè)置節(jié)點(diǎn)文字.

ageElm.setText("29");

刪除某節(jié)點(diǎn).

parentElm.remove(childElm);// childElm是待刪除的節(jié)點(diǎn),parentElm是其父節(jié)點(diǎn)

三.屬性相關(guān).

取得某節(jié)點(diǎn)下的某屬性

    Element root=document.getRootElement();    
    Attribute attribute=root.attribute("size");// 屬性名name

取得屬性的文字

    String text=attribute.getText();

也可以用:

String text2=root.element("name").attributeValue("firstname"); //這個(gè)是取得根節(jié)點(diǎn)下name    字節(jié)點(diǎn)的屬性firstname的值.

遍歷某節(jié)點(diǎn)的所有屬性

Element root=document.getRootElement();    
for(Iterator it=root.attributeIterator();it.hasNext();){
        Attribute attribute = (Attribute) it.next();
        String text=attribute.getText();
        System.out.println(text);
    }

示例文檔 demo.xml



    
    

java代碼

SAXReader saxReader = new SAXReader();
Document document = saxReader.read(baseUrl);
// 獲取根節(jié)點(diǎn)
Element rootElement = document.getRootElement();
// 獲取指定節(jié)點(diǎn)的集合
List configlist = rootElement.selectNodes("config");
for (Element element : configlist) {
    Map map = new HashMap();
    String name = element.attribute("name").getStringValue();
    String value = element.attribute("value").getStringValue();
    map.put(name, value);
    //doSomething   
}    

設(shè)置某節(jié)點(diǎn)的屬性和文字.

newMemberElm.addAttribute("name", "sitinspring");

設(shè)置屬性的文字

Attribute attribute=root.attribute("name");
attribute.setText("sitinspring");

刪除某屬性

Attribute attribute=root.attribute("size");// 屬性名name
root.remove(attribute);

四.將文檔寫入XML文件.

文檔中全為英文,不設(shè)置編碼,直接寫入的形式.

XMLWriter writer = new XMLWriter(new FileWriter("output.xml"));
writer.write(document);
writer.close();

文檔中含有中文,設(shè)置編碼格式寫入的形式.

OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding("GBK");    // 指定XML編碼        
XMLWriter writer = new XMLWriter(new FileWriter("output.xml"),format);

writer.write(document);
writer.close();

五.字符串與XML的轉(zhuǎn)換

將字符串轉(zhuǎn)化為XML

String text = "sitinspring";
Document document = DocumentHelper.parseText(text);

將文檔或節(jié)點(diǎn)的XML轉(zhuǎn)化為字符串.

SAXReader reader = new SAXReader();
Document  document = reader.read(new File("input.xml"));            
Element root=document.getRootElement();                
String docXmlText=document.asXML();
String rootXmlText=root.asXML();
Element memberElm=root.element("member");
String memberXmlText=memberElm.asXML();

六.使用 XPath 快速找到節(jié)點(diǎn).

讀取的 XML 文檔示例



  MemberManagement
  
  
    PRJ1
    PRJ2
    PRJ3
    PRJ4
  
  
    
      org.eclipse.jdt.core.javabuilder
      
      
    
  
  
    org.eclipse.jdt.core.javanature
  

使用XPath快速找到節(jié)點(diǎn)project

public static void main(String[] args){

SAXReader reader = new SAXReader();

try{
  Document  doc = reader.read(new File("sample.xml"));

  List projects=doc.selectNodes("/projectDescription/projects/project"); // 以"/" 開頭

  Iterator it=projects.iterator();

  while(it.hasNext()){
    Element elm=(Element)it.next();       
    System.out.println(elm.getText());
  }
}
catch(Exception ex){
   ex.printStackTrace();
}
}

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/64113.html

相關(guān)文章

  • Dom4j 讀寫XML簡介

    摘要:原文鏈接修改部分過時(shí)內(nèi)容,添加部分示例要使用讀寫文檔需要先下載包官方網(wǎng)站在目前最新包下載地址解開后有兩個(gè)包僅操作文檔的話把加入工程就可以了如果需要使用的話還需要加入包以下是相關(guān)操作一對(duì)象相關(guān)讀取文件獲得對(duì)象解析形式的文本得到對(duì)象主動(dòng)創(chuàng) 原文鏈接:http://www.blogjava.net/junglesong/archive/2008/02/21/181196.html 修改部分...

    cartoon 評(píng)論0 收藏0
  • 淺析SAX,DOM,JAXP,JDOM與DOM4J之間的關(guān)系

    摘要:通過解析器獲取文檔對(duì)象后,開發(fā)人員可以很方便的對(duì)其進(jìn)行操作,如獲取更元素,獲取一個(gè)子元素,增加子元素,移除子元素。它并沒有為解析提供任何新功能,但是它為在獲取與解析器提供了更加直接的途徑。自身不包含解析器,默認(rèn)使用隨包一起發(fā)行的。 showImg(/img/bVDhQE?w=888&h=220); 文章最初發(fā)表于我的個(gè)人博客非典型性程序猿 眾所周知,SAX與DOM是JAVA中兩大核心X...

    妤鋒シ 評(píng)論0 收藏0
  • 淺析SAX,DOM,JAXP,JDOM與DOM4J之間的關(guān)系

    摘要:通過解析器獲取文檔對(duì)象后,開發(fā)人員可以很方便的對(duì)其進(jìn)行操作,如獲取更元素,獲取一個(gè)子元素,增加子元素,移除子元素。它并沒有為解析提供任何新功能,但是它為在獲取與解析器提供了更加直接的途徑。自身不包含解析器,默認(rèn)使用隨包一起發(fā)行的。 showImg(https://segmentfault.com/img/bVDhQE?w=888&h=220); 文章最初發(fā)表于我的個(gè)人博客非典型性程序猿...

    JasinYip 評(píng)論0 收藏0
  • XML就是這么簡單

    什么是XML? XML:extensiable markup language 被稱作可擴(kuò)展標(biāo)記語言 XML簡單的歷史介紹: gml->sgml->html->xml gml(通用標(biāo)記語言)–在不同的機(jī)器進(jìn)行通信的數(shù)據(jù)規(guī)范 sgml(標(biāo)準(zhǔn)通用標(biāo)記語言) html(超文本標(biāo)記語言) 為什么我們需要使用XML呢? ①我們沒有XML這種語言之前,我們使用的是String作為兩個(gè)程序之間的通訊!現(xiàn)在問...

    pf_miles 評(píng)論0 收藏0
  • XML就是這么簡單

    什么是XML? XML:extensiable markup language 被稱作可擴(kuò)展標(biāo)記語言 XML簡單的歷史介紹: gml->sgml->html->xml gml(通用標(biāo)記語言)–在不同的機(jī)器進(jìn)行通信的數(shù)據(jù)規(guī)范 sgml(標(biāo)準(zhǔn)通用標(biāo)記語言) html(超文本標(biāo)記語言) 為什么我們需要使用XML呢? ①我們沒有XML這種語言之前,我們使用的是String作為兩個(gè)程序之間的通訊!現(xiàn)在問...

    yacheng 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<