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

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

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

    漂洋過(guò)海

    漂洋過(guò)海
    數(shù)據(jù)加載中……
    dom4j讀寫xml文件 (轉(zhuǎn))

     

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

    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的對(duì)象
                SAXReader reader = new SAXReader();

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

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

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

                    }

                    
    if (bl) {
                        
    // 添加一個(gè)學(xué)生信息
                        Element student = root.addElement("學(xué)生");
                        student.addAttribute(
    "sid""100");
                        Element sid 
    = student.addElement("編號(hào)");
                        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文件并新增內(nèi)容
                    Document _document = DocumentHelper.createDocument();
                    Element _root 
    = _document.addElement("學(xué)生信息");
                    Element _student 
    = _root.addElement("學(xué)生");
                    _student.addAttribute(
    "sid""001");
                    Element _id 
    = _student.addElement("編號(hào)");
                    _id.setText(
    "001");
                    Element _name 
    = _student.addElement("姓名");
                    _name.setText(
    "灰機(jī)");
                    Element _age 
    = _student.addElement("年齡");
                    _age.setText(
    "18");

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

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


        }

    }


    執(zhí)行結(jié)果應(yīng)該是這樣:



    循環(huán)解析節(jié)點(diǎn):

    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對(duì)象相關(guān)

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

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


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

          String text = "<members></members>";
          Document document 
    = DocumentHelper.parseText(text);


    3.主動(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)

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

         Element rootElm = document.getRootElement();


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

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


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

         String text=memberElm.getText();

    也可以用:

         String text=root.elementText("name");

    這個(gè)是取得根節(jié)點(diǎn)下的name字節(jié)點(diǎn)的文字.

    4.取得某節(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
    }


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

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


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

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


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

    ageElm.setText("29");


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

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


    9.添加一個(gè)CDATA節(jié)點(diǎn).

             Element contentElm = infoElm.addElement("content");
             contentElm.addCDATA(diary.getContent());

                contentElm.getText(); // 特別說(shuō)明:獲取節(jié)點(diǎn)的CDATA值與獲取節(jié)點(diǎn)的值是一個(gè)方法
                contentElm.clearContent(); //清除節(jié)點(diǎn)中的內(nèi)容,CDATA亦可



    三.屬性相關(guān).
    1.取得某節(jié)點(diǎn)下的某屬性

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


    2.取得屬性的文字

                 String text=attribute.getText();

    也可以用:

    String text2=root.element("name").attributeValue("firstname");

    這個(gè)是取得根節(jié)點(diǎn)下name字節(jié)點(diǎn)的屬性firstname的值.

    3.遍歷某節(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);
                 }


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

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


    5.設(shè)置屬性的文字

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


    6.刪除某屬性

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


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

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


    2.文檔中含有中文,設(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)換
    1.將字符串轉(zhuǎn)化為XML

    String text = "<members> <member>sitinspring</member> </members>";
    Document document
    = DocumentHelper.parseText(text);


    2.將文檔或節(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();

     

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


    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 日日摸夜夜添夜夜免费视频| 麻豆安全免费网址入口| 两个人看的www免费高清| 免费在线观看理论片| 亚洲AV永久无码天堂影院| 成人毛片18女人毛片免费视频未| 亚洲一级片在线观看| 97性无码区免费| 亚洲性无码一区二区三区| 日韩一区二区a片免费观看| 亚洲一区二区三区写真| 国产男女性潮高清免费网站| 午夜亚洲国产理论片二级港台二级| 日本不卡免费新一二三区| 人成电影网在线观看免费| 日韩亚洲欧洲在线com91tv| 久久这里只精品热免费99| 亚洲精品成人网站在线播放 | 成人午夜免费视频| 中文字幕亚洲电影| 日韩av无码久久精品免费| 亚洲一日韩欧美中文字幕在线| 免费观看国产小粉嫩喷水| 热久久这里是精品6免费观看| 亚洲精品自在线拍| 免费无码成人AV片在线在线播放 | 久久一区二区免费播放| 中文字幕亚洲日韩无线码| 日本免费一区二区三区 | 中国一级特黄的片子免费 | 亚洲成A人片在线播放器| 日日操夜夜操免费视频| 国产精品美女免费视频观看| 亚洲AV无码久久精品色欲| 国产成人免费高清激情视频| 黄色免费网站在线看| 亚洲精品动漫在线| 成人免费无码精品国产电影| 中文字幕在线视频免费| 亚洲av成人一区二区三区| 亚洲人成网站在线观看青青 |