<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://m.tkk7.com)原創,轉載請注明出處.
    主站蜘蛛池模板: 国产成人综合亚洲一区| 亚洲免费二区三区| 一级做a爰片久久毛片免费陪| 在线视频观看免费视频18| 亚洲国产成人精品无码区在线秒播 | 91香蕉视频免费| 亚洲午夜一区二区电影院| 免费影院未满十八勿进网站| 亚洲va精品中文字幕| 成人免费a级毛片| 亚洲成AV人片在WWW| 7777久久亚洲中文字幕| 中国在线观看免费的www| 亚洲开心婷婷中文字幕| 久久免费公开视频| 亚洲成人黄色在线| 成人网站免费观看| 成人福利在线观看免费视频| 丁香五月亚洲综合深深爱| 国产免费AV片在线观看 | 国产三级免费电影| fc2成年免费共享视频18| 亚洲短视频男人的影院| 国产免费看JIZZ视频| 美女被艹免费视频| 亚洲va无码va在线va天堂| 国产成人yy免费视频| 婷婷亚洲综合一区二区| 亚洲乱码国产一区三区| 动漫黄网站免费永久在线观看| 精品国产_亚洲人成在线| 亚洲精品无码久久千人斩| 国产精彩免费视频| 精品国产亚洲第一区二区三区| 国产亚洲日韩在线三区| 成人浮力影院免费看| 男人免费视频一区二区在线观看| 亚洲AV无码久久精品色欲| 免费羞羞视频网站| 亚洲一区二区无码偷拍| 亚洲午夜福利在线观看|