dom4j學(xué)習(xí)轉(zhuǎn)

          1.加載XML文檔
          SAXReader reader = new SAXReader();
          Document doc = reader.read("src/book.xml");

          2.獲得根元素
          Node root = doc.getRootElement();
               或 Element r = doc.getRootElement();

          3.取得某節(jié)點(diǎn)的單個(gè)子節(jié)點(diǎn)
          Element root = root.getRootElement();
          Element memberElm=root.element("member");// "member"是節(jié)點(diǎn)名

          4.取得節(jié)點(diǎn)的文字
          String text=memberElm.getText();

          5.取得某節(jié)點(diǎn)下名為"book"的所有字節(jié)點(diǎn)并進(jìn)行遍歷
          Element r = doc.getRootElement();
          List titles = r.elements("book");
          for(int i=0;i<titles.size();i++){
               System.out.println(((Element)titles.get(i)).asXML());
          }
          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)

          三.屬性相關(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);
          四.將文檔寫(xiě)入XML文件.
          1.文檔中全為英文,不設(shè)置編碼,直接寫(xiě)入的形式.
          XMLWriter writer = new XMLWriter(new FileWriter("output.xml"));
          writer.write(document);
          writer.close();
          2.文檔中含有中文,設(shè)置編碼格式寫(xiě)入的形式.
                      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();
          六.使用XPath快速找到節(jié)點(diǎn).
          讀取的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快速找到節(jié)點(diǎn)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 2012-05-22 10:52 youngturk 閱讀(171) 評(píng)論(0)  編輯  收藏 所屬分類(lèi): 幾種文檔解析

          <2012年5月>
          293012345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          導(dǎo)航

          統(tǒng)計(jì)

          公告

          this year :
          1 jQuery
          2 freemarker
          3 框架結(jié)構(gòu)
          4 口語(yǔ)英語(yǔ)

          常用鏈接

          留言簿(6)

          隨筆分類(lèi)

          隨筆檔案

          文章分類(lèi)

          文章檔案

          相冊(cè)

          EJB學(xué)習(xí)

          Flex學(xué)習(xí)

          learn English

          oracle

          spring MVC web service

          SQL

          Struts

          生活保健

          解析文件

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 若羌县| 额济纳旗| 垫江县| 武功县| 田林县| 永新县| 海宁市| 康马县| 邹城市| 确山县| 富顺县| 佛坪县| 西充县| 贺州市| 城口县| 崇义县| 搜索| 曲阳县| 莫力| 江津市| 江阴市| 绥德县| 龙南县| 华亭县| 松潘县| 清河县| 蓝山县| 达拉特旗| 平远县| 福海县| 南城县| 奉节县| 正定县| 萝北县| 邓州市| 西峡县| 湘潭市| 儋州市| 泌阳县| 常熟市| 溧阳市|