<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    春風博客

    春天里,百花香...

    導航

    <2007年12月>
    2526272829301
    2345678
    9101112131415
    16171819202122
    23242526272829
    303112345

    統計

    公告

    MAIL: junglesong@gmail.com
    MSN: junglesong_5@hotmail.com

    Locations of visitors to this page

    常用鏈接

    留言簿(11)

    隨筆分類(224)

    隨筆檔案(126)

    個人軟件下載

    我的其它博客

    我的鄰居們

    最新隨筆

    搜索

    積分與排名

    最新評論

    閱讀排行榜

    評論排行榜

    Dom4j下載及使用Dom4j讀寫XML簡介

    sitinspring(如坐春風)原創,轉載請注明作者及出處.

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

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

    以下是相關操作:

    一.Document對象相關

    1.讀取XML文件,獲得document對象.
                SAXReader reader = new SAXReader();
                Document  document 
    = reader.read(new File("input.xml"));


    2.解析XML形式的文本,得到document對象.
                String text = "<members></members>";
                Document document 
    = DocumentHelper.parseText(text);

    3.主動創建document對象.
                Document document = DocumentHelper.createDocument();
                Element root 
    = document.addElement("members");// 創建根節點

    二.節點相關

    1.獲取文檔的根節點.
    Element rootElm = document.getRootElement();

    2.取得某節點的單個子節點.
    Element memberElm=root.element("member");// "member"是節點名

    3.取得節點的文字
    String text=memberElm.getText();
    也可以用:
    String text=root.elementText("name");
    這個是取得根節點下的name字節點的文字.

    4.取得某節點下名為"member"的所有字節點并進行遍歷.
    List nodes = rootElm.elements("member");

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

    5.對某節點下的所有子節點進行遍歷.
                for(Iterator it=root.elementIterator();it.hasNext();){
                    Element element 
    = (Element) it.next();
                    
    // do something
                }

    6.在某節點下添加子節點.
    Element ageElm = newMemberElm.addElement("age");

    7.設置節點文字.
    ageElm.setText("29");

    8.刪除某節點.
    parentElm.remove(childElm);// childElm是待刪除的節點,parentElm是其父節點

    9.添加一個CDATA節點.
            Element contentElm = infoElm.addElement("content");
            contentElm.addCDATA(diary.getContent());


    三.屬性相關.
    1.取得某節點下的某屬性
                Element root=document.getRootElement();    
                Attribute attribute
    =root.attribute("size");// 屬性名name

    2.取得屬性的文字
                String text=attribute.getText();
    也可以用:
    String text2=root.element("name").attributeValue("firstname");
    這個是取得根節點下name字節點的屬性firstname的值.

    3.遍歷某節點的所有屬性
                Element root=document.getRootElement();    
                
    for(Iterator it=root.attributeIterator();it.hasNext();){
                    Attribute attribute 
    = (Attribute) it.next();
                    String text
    =attribute.getText();
                    System.out.println(text);
                }

    4.設置某節點的屬性和文字.
    newMemberElm.addAttribute("name""sitinspring");

    5.設置屬性的文字
                Attribute attribute=root.attribute("name");
                attribute.setText(
    "sitinspring");

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

    四.將文檔寫入XML文件.
    1.文檔中全為英文,不設置編碼,直接寫入的形式.
    XMLWriter writer = new XMLWriter(new FileWriter("output.xml"));
    writer.write(document);
    writer.close();

    2.文檔中含有中文,設置編碼格式寫入的形式.
                OutputFormat format = OutputFormat.createPrettyPrint();
                format.setEncoding(
    "GBK");    // 指定XML編碼        
                XMLWriter writer = new XMLWriter(new FileWriter("output.xml"),format);
                
                writer.write(document);
                writer.close();

    五.字符串與XML的轉換
    1.將字符串轉化為XML
    String text = "<members> <member>sitinspring</member> </members>";
    Document document 
    = DocumentHelper.parseText(text);

    2.將文檔或節點的XML轉化為字符串.
                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快速找到節點.
    讀取的XML文檔示例
    <?xml version="1.0" encoding="UTF-8"?>
    <projectDescription>
      
    <name>MemberManagement</name>
      
    <comment></comment>
      
    <projects>
        
    <project>PRJ1</project>
        
    <project>PRJ2</project>
        
    <project>PRJ3</project>
        
    <project>PRJ4</project>
      
    </projects>
      
    <buildSpec>
        
    <buildCommand>
          
    <name>org.eclipse.jdt.core.javabuilder</name>
          
    <arguments>
          
    </arguments>
        
    </buildCommand>
      
    </buildSpec>
      
    <natures>
        
    <nature>org.eclipse.jdt.core.javanature</nature>
      
    </natures>
    </projectDescription>

    使用XPath快速找到節點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();
        }

      }

    posted on 2007-12-16 19:46 sitinspring 閱讀(10600) 評論(0)  編輯  收藏 所屬分類: Java基礎

    sitinspring(http://www.tkk7.com)原創,轉載請注明出處.
    主站蜘蛛池模板: 国产V片在线播放免费无码| 99久久精品日本一区二区免费 | 久久久久亚洲国产AV麻豆| 免费国产综合视频在线看| 久艹视频在线免费观看| 亚洲色精品三区二区一区| 国产亚洲人成A在线V网站 | 色吊丝永久在线观看最新免费| 男女污污污超污视频免费在线看| 亚洲高清在线视频| 国产成人免费a在线视频app| 精品亚洲永久免费精品| 亚洲高清一区二区三区电影| 亚洲av无码av制服另类专区| 四虎国产精品免费视| 99久久久国产精品免费牛牛四川| 亚洲爆乳成av人在线视菜奈实| 亚洲AV无码成人网站久久精品大| 麻豆成人精品国产免费| 久别的草原电视剧免费观看| 成年免费a级毛片| 午夜在线a亚洲v天堂网2019| 亚洲av永久无码精品秋霞电影影院 | 亚洲综合国产成人丁香五月激情| 亚洲日韩激情无码一区| 国产成人高清精品免费软件| 91免费在线播放| 9i9精品国产免费久久| 亚洲爆乳无码专区www| 18gay台湾男同亚洲男同| 美腿丝袜亚洲综合| 国产美女无遮挡免费视频网站 | 久久亚洲春色中文字幕久久久| 亚洲国产中文v高清在线观看| 最近最好的中文字幕2019免费| 99视频在线看观免费| www成人免费视频| 黄色三级三级三级免费看| 在线观看亚洲AV日韩A∨| 亚洲国产成人九九综合| 亚洲精品国产成人专区|