隨筆 - 55  文章 - 187  trackbacks - 0
          <2008年1月>
          303112345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          常用鏈接

          留言簿(12)

          隨筆分類

          隨筆檔案

          groovy

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          最近熟悉了一下Dom4,寫了一些小代碼,分為生成與解析。
          一、生成xml
          需要的jar包:dom4j、jaxen
          輸出的結果xml

          <?xml version="1.0" encoding="gb2312"?>

          <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
            
          <!--Envelope Comment--><?target text?>

            
          <SOAP-ENV:Body>
              
          <m:InsertCP xmlns:m="http://tempuri.org/">Hello world!</m:InsertCP>
            
          </SOAP-ENV:Body>
          </SOAP-ENV:Envelope>


          java代碼

           1package org.xmltool.test;
           2
           3import java.io.FileWriter;
           4import java.io.IOException;
           5
           6import org.dom4j.Document;
           7import org.dom4j.DocumentHelper;
           8import org.dom4j.Element;
           9import org.dom4j.Namespace;
          10import org.dom4j.QName;
          11import org.dom4j.io.OutputFormat;
          12import org.dom4j.io.XMLWriter;
          13
          14public class Test {
          15
          16    /**
          17     * @param args
          18     * @throws IOException
          19     */

          20    public static void main(String[] args) throws IOException {
          21
          22        /* 創建Document */
          23        Document doc = DocumentHelper.createDocument();
          24
          25        /* 創建備用Namespace */
          26        Namespace SOAP_ENV_ns = new Namespace("SOAP-ENV",
          27                "http://schemas.xmlsoap.org/soap/envelope/");
          28        Namespace SOAP_ENC_ns = new Namespace("SOAP-ENC",
          29                "http://schemas.xmlsoap.org/soap/encoding/");
          30        Namespace xsi_ns = new Namespace("xsi",
          31                "http://www.w3.org/2001/XMLSchema-instance");
          32        Namespace xsd_ns = new Namespace("xsd",
          33                "http://www.w3.org/2001/XMLSchema");
          34
          35        /* SOAP-ENV:Envelope */
          36        QName envelopeQName = new QName("Envelope", SOAP_ENV_ns);/* 構造帶名字空間頭信息SOAP-ENV的節點Envelope */
          37        Element envelopeElement = doc.addElement(envelopeQName);
          38        envelopeElement.addComment("Envelope Comment");/* 添加注釋 */
          39        envelopeElement.addProcessingInstruction("target""text");/* 添加指令 */
          40        /* 添加其它名字空間(作為屬性) */
          41        envelopeElement.add(SOAP_ENC_ns);
          42        envelopeElement.add(xsi_ns);
          43        envelopeElement.add(xsd_ns);
          44
          45        /* SOAP-ENV:Body */
          46        QName bodyQName = new QName("Body", SOAP_ENV_ns);
          47        Element bodyElement = DocumentHelper.createElement(bodyQName);
          48        envelopeElement.add(bodyElement);
          49
          50        /* m:InsertCP */
          51        Namespace m_ns = new Namespace("m""http://tempuri.org/");
          52        QName insertCpQName = new QName("InsertCP", m_ns);
          53        Element InsertCpElement = DocumentHelper.createElement(insertCpQName);
          54        bodyElement.add(InsertCpElement);
          55
          56        OutputFormat format = OutputFormat.createPrettyPrint();/* 美化格式的輸出 */
          57        // OutputFormat format = OutputFormat.createCompactFormat();/*
          58        // 壓縮格式的輸出,節省空間 */
          59        format.setEncoding("gb2312");/* xml的編碼 */
          60        XMLWriter writer = new XMLWriter(new FileWriter("c:/test.xml"), format);
          61        writer.write(doc);
          62        writer.close();/* 必寫無疑 */
          63    }

          64}

          65


          二、解析xml
          采用了Visitor模式。通過遍歷XML的各個節點,完成XML解析。

           1package org.xmltool.bean;
           2
           3import org.dom4j.Document;
           4import org.dom4j.DocumentException;
           5import org.dom4j.Element;
           6import org.dom4j.VisitorSupport;
           7import org.dom4j.io.SAXReader;
           8
           9public class MyVisitor extends VisitorSupport {
          10    @Override
          11    public void visit(Element node) {
          12        System.out.println(node.getPath());
          13        if ("InsertCP".equals(node.getName())) {
          14            System.out.println(node.getText());
          15        }

          16    }

          17
          18    public static void main(String[] args) throws DocumentException {
          19        SAXReader reader = new SAXReader();
          20        Document doc = reader.read("c:/test.xml");
          21        doc.accept(new MyVisitor());
          22    }

          23}

          24

          執行結果為:

          /SOAP-ENV:Envelope
          /SOAP-ENV:Envelope/SOAP-ENV:Body
          /SOAP-ENV:Envelope/SOAP-ENV:Body/m:InsertCP
          Hello world!


          --------------------

              WE準高手

          posted on 2008-01-16 11:54 大衛 閱讀(3346) 評論(2)  編輯  收藏 所屬分類: Java

          FeedBack:
          # re: Dom4J的demo 2008-01-16 12:27 久城
          LZ第一篇.......支持下.......  回復  更多評論
            
          # re: Dom4J的demo 2008-01-16 17:41 Kevin Jiang
          路過看到,頂一下^_^  回復  更多評論
            
          主站蜘蛛池模板: 英山县| 长子县| 临泉县| 宁安市| 山东省| 教育| 泸定县| 定西市| 比如县| 德格县| 长宁县| 枣阳市| 客服| 大新县| 瓦房店市| 瓮安县| 衢州市| 镇康县| 垣曲县| 巴东县| 吴忠市| 大石桥市| 恩平市| 游戏| 溧阳市| 沂南县| 自治县| 原平市| 涿州市| 井冈山市| 宜宾市| 仁布县| 墨玉县| 基隆市| 怀安县| 兴仁县| 耒阳市| 仪征市| 石景山区| 吴堡县| 涟源市|