leisure

          JAVA - exceed,helloworld
          隨筆 - 50, 文章 - 0, 評論 - 11, 引用 - 0
          數據加載中……

          using dom4j to handle xml 使用dom4j操作xml

          dom4j是一個非常簡單的開源項目。該類庫底層主要借助了Java集合框架,完美地支持對XML,XPath和XSLT的操作!

          xml示例:
          <?xml version="1.0" encoding="gbk"?>
          <games>
              
          <game ID="1">
                  
          <name>極品飛車OL</name>
                  
          <type>網絡游戲</type>
                  
          <score>85</score>
              
          </game>
              
          <game ID="2">
                  
          <name>仙劍奇?zhèn)b傳5</name>
                  
          <type>單機游戲</type>
                  
          <score>90</score>
              
          </game>
              
          <game ID="3">
                  
          <name>地下城與勇士</name>
                  
          <type>網絡游戲</type>
                  
          <score>75</score>
              
          </game>
          </games>

          一、讀取
                  SAXReader reader = new SAXReader();
                  File file 
          = new File("d:\\games.xml");
                  Document doc 
          = reader.read(file);
          SAXReader支持多種對象的讀取,包括File,Reader,InputStream,URL,InputSource。

          二、查找節(jié)點
              1、通過id查找節(jié)點:
                  Node node = doc.elementByID("2");
                  
          // <game ID="2"><name>仙劍奇?zhèn)b傳5</name><type>單機游戲</type></game>        
                  System.out.println(node.asXML());     

              2、通過XPath查找節(jié)點
                  Node node = doc.selectSingleNode("/games/game[1]/name");    // game[1]獲取的是第1個節(jié)點
                  System.out.println(node.getText());                                          // 極品飛車OL

                  List nodeList = doc.selectNodes("/games/game[score>80]/name");    // 所有分數大于80分的游戲節(jié)點下的name節(jié)點
                  
          // 極品飛車OL 仙劍奇?zhèn)b傳5 
                  for(int i = 0; i < nodeList.size(); i++) {
                      Node node 
          = (Node)nodeList.get(i);
                      System.out.println(node.getText());
                  }

              3、獲取父節(jié)點
                  Node node = doc.elementByID("1");
                  System.out.println(node.getParent().getName());

          三、移除
              1、移除節(jié)點
                  Element element = doc.elementByID("1");
                  Node typeNode 
          = element.selectSingleNode("type");
                  element.remove(typeNode);
                  
          // <game ID="1"><name>極品飛車OL</name><score>85</score></game>
                  System.out.println(element.asXML());

              2、移除屬性
                  Element element = doc.elementByID("1");
                  System.out.println(element.attributeValue(
          "ID"));                    // 1
                  System.out.println(element.remove(element.attribute("ID")));    // true 移除成功 false 移除失敗
                  System.out.println(element.attributeValue("ID"));                    // null

          四、添加與設置
          由于添加(add)和設置(set)方法與第三點移除類似。請穩(wěn)步直接看API。

          五、輸出xml
                  OutputFormat format = new OutputFormat();
                  format.setEncoding(
          "gbk");            // 設置xml文檔頭編碼 <?xml version="1.0" encoding="gbk"?>
                  XMLWriter writer = new XMLWriter(new FileWriter(new File("d:\\games2.xml")), format);
                  
          // write方法可接受Node、Element、Document、Attribute等對象
                  writer.write(doc);
                  writer.close();                            
          // 必須close才會生成文件

          六、CDATA
                  Element element = new BaseElement("game");
                  element.add(DocumentHelper.createCDATA(
          "戰(zhàn)神"));        // 添加 CDATA數據
                  System.out.println(element.asXML());
                  element.setText(element.getText());                                
          // 清除 CDATA標志
                  System.out.println(element.asXML());

          參考:
          dom4j api
          XPath 教程

          posted on 2011-09-20 00:16 leisure 閱讀(504) 評論(0)  編輯  收藏 所屬分類: java

          主站蜘蛛池模板: 加查县| 麻城市| 眉山市| 阿城市| 高阳县| 宁陵县| 九龙城区| 满城县| 大石桥市| 寻乌县| 金山区| 遵化市| 安多县| 界首市| 姜堰市| 时尚| 普安县| 汶川县| 长兴县| 福海县| 咸宁市| 岢岚县| 乌鲁木齐县| 青海省| 天全县| 长治市| 新宾| 崇左市| 平凉市| 临江市| 新蔡县| 华蓥市| 尼勒克县| 永丰县| 莱阳市| 信宜市| 镇雄县| 泸州市| 黎平县| 梧州市| 义马市|