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

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

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

    漂洋過海

    漂洋過海
    數據加載中……
    dom4j讀寫xml文件 (轉)

     

    首先我們給出一段示例程序:

    import java.io.File;
    import java.io.FileWriter;
    import java.util.Iterator;

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

    public class DOM4JTest {

        
    /** */
        
    /** */
        
    /** */
        
    /**
         * DOM4J讀寫XML示例
         * 
         * 
    @param args
         * 
    @throws Exception
         
    */

        
    public static void main(String[] args) {
            
    try {
                XMLWriter writer 
    = null;// 聲明寫XML的對象
                SAXReader reader = new SAXReader();

                OutputFormat format 
    = OutputFormat.createPrettyPrint();
                format.setEncoding(
    "GBK");// 設置XML文件的編碼格式

                String filePath 
    = "d:\\student.xml";
                File file 
    = new File(filePath);
                
    if (file.exists()) {
                    Document document 
    = reader.read(file);// 讀取XML文件
                    Element root = document.getRootElement();// 得到根節點
                    boolean bl = false;
                    
    for (Iterator i = root.elementIterator("學生"); i.hasNext();) {
                        Element student 
    = (Element) i.next();
                        
    if (student.attributeValue("sid").equals("001")) {
                            
    // 修改學生sid=001的學生信息
                            student.selectSingleNode("姓名").setText("王五");
                            student.selectSingleNode(
    "年齡").setText("25");

                            writer 
    = new XMLWriter(new FileWriter(filePath), format);
                            writer.write(document);
                            writer.close();
                            bl 
    = true;
                            
    break;
                        }

                    }

                    
    if (bl) {
                        
    // 添加一個學生信息
                        Element student = root.addElement("學生");
                        student.addAttribute(
    "sid""100");
                        Element sid 
    = student.addElement("編號");
                        sid.setText(
    "100");
                        Element name 
    = student.addElement("姓名");
                        name.setText(
    "嘎嘎");
                        Element sex 
    = student.addElement("性別");
                        sex.setText(
    "");
                        Element age 
    = student.addElement("年齡");
                        age.setText(
    "21");

                        writer 
    = new XMLWriter(new FileWriter(filePath), format);
                        writer.write(document);
                        writer.close();
                    }

                }
     else {
                    
    // 新建student.xml文件并新增內容
                    Document _document = DocumentHelper.createDocument();
                    Element _root 
    = _document.addElement("學生信息");
                    Element _student 
    = _root.addElement("學生");
                    _student.addAttribute(
    "sid""001");
                    Element _id 
    = _student.addElement("編號");
                    _id.setText(
    "001");
                    Element _name 
    = _student.addElement("姓名");
                    _name.setText(
    "灰機");
                    Element _age 
    = _student.addElement("年齡");
                    _age.setText(
    "18");

                    writer 
    = new XMLWriter(new FileWriter(file), format);
                    writer.write(_document);
                    writer.close();
                }

                System.out.println(
    "操作結束! ");
            }
     catch (Exception e) {
                e.printStackTrace();
            }


        }

    }


    執行結果應該是這樣:



    循環解析節點:

    private void getAllNodes(String xml) {
            
    try {
                Document authtmp 
    = DocumentHelper.parseText(xml);
                List
    <Element> list = authtmp.selectNodes("//sms/node");
                
    for (int j = 0; j < list.size(); j++{
                    Element node 
    = (Element) list.get(j);
                    nodeByNodes(node);
                }

            }
     catch (Exception e) {
                e.printStackTrace();
            }

        }


        
    private void nodeByNodes(Element node) {
            
    if (node.element("node"!= null{
                String id 
    = node.attributeValue("id");
                String name 
    = node.attributeValue("name");
                System.out.print(id 
    + "-------");
                System.out.println(name);
                
    for (Iterator i = node.elementIterator("node"); i.hasNext();) {
                    Element newNode 
    = (Element) i.next();
                    nodeByNodes(newNode);
                }

            }
     else {
                String id 
    = node.attributeValue("id");
                String name 
    = node.attributeValue("name");
                System.out.print(id 
    + "-------");
                System.out.println(name);
            }

        }


    其次DOM4J的解釋

    一.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());

                contentElm.getText(); // 特別說明:獲取節點的CDATA值與獲取節點的值是一個方法
                contentElm.clearContent(); //清除節點中的內容,CDATA亦可



    三.屬性相關.
    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();

     

    posted on 2012-07-31 20:55 漂洋過海 閱讀(69) 評論(0)  編輯  收藏


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 久久久久免费精品国产小说| 亚洲va久久久噜噜噜久久狠狠 | 国产精品黄页在线播放免费| 久久精品亚洲AV久久久无码| 日本免费人成在线网站| 亚洲理论片在线中文字幕| 亚洲黄色免费观看| 自拍日韩亚洲一区在线| 男男AV纯肉无码免费播放无码| 激情综合亚洲色婷婷五月APP| 女人18毛片a级毛片免费| 亚洲另类无码专区首页| 免费99热在线观看| 中文字幕手机在线免费看电影| 亚洲线精品一区二区三区影音先锋 | 美女被免费网站在线视频免费| 免费二级毛片免费完整视频| 一级毛片一级毛片免费毛片 | 久久国内免费视频| 亚洲精品无码久久久久秋霞| 免费一级国产生活片| 国产三级在线免费观看| 亚洲欧洲日产国码久在线观看| 男女免费观看在线爽爽爽视频| 国产午夜亚洲精品不卡免下载| 国产精品亚洲产品一区二区三区 | 亚洲av无码乱码在线观看野外| 大地资源中文在线观看免费版| 99ri精品国产亚洲| 在线视频免费国产成人| 国产福利在线观看永久免费| 精品日韩亚洲AV无码一区二区三区 | 亚洲精品高清一二区久久| 嫩草在线视频www免费观看 | 亚洲国产成人片在线观看无码 | 麻豆视频免费播放| 男人免费视频一区二区在线观看 | 五级黄18以上免费看| 久久久久亚洲av无码专区喷水| 日韩人妻无码免费视频一区二区三区 | 成在人线av无码免费高潮水|