您的位置:首页 > 其它

dom4j解析和处理xml

2013-03-22 14:54 211 查看
本文将介绍

1.如何通过dom4j来对xml文档进行增、删、改、查

2.如何从本地读入xml文档

3.如何把xml文档转换成xml字符串

4.如何把xml输出以指定的编码输出到xml文档。

5.如何把xml字符串转换成document。

package com.xml.dom4j;

    

    import java.io.FileOutputStream;    

    import java.io.IOException;

    import java.io.OutputStreamWriter;

    

    import org.dom4j.Document;

    import org.dom4j.DocumentHelper;

    import org.dom4j.Element;

    import org.dom4j.io.XMLWriter;         

         /**

          * 创建document

          * @return

          */

        public static Document createDomFJ(){

            Document doc =DocumentHelper.createDocument();

            return doc;

        }

          /**

         * 给文档添加根节点

         * @param elName 子节点名称

         * @param doc   文档

         * @return

         */

        public static Element appendChile(String elName,Document doc){

            Element root=doc.addElement(elName);

            return root;

        }

        /**

         * 给父节点添加子节点

         * @param elName 子节点的名称

         * @param el  父节点

         * @return

         */

        public static Element appendChile(String elName,Element el){

            Element sub=el.addElement(elName);

            return sub;

        }

        /**

         * 添加子节点及其对应的值

         * @param elName 子节点的名称

         * @param value   子节点的值

         * @param el     父节点

         */

        public static void appendChile(String elName,String value,Element el){

            Element sub=el.addElement(elName);

            sub.setText(value);

        }

        /**

         * 根目录添加注释

         * @param explain  说明文字

         * @param doc

         */

        public static void addCommend(String explain,Document doc){

            doc.addComment(explain);

        }

        /**

             * 为子节点添加说明

         * @param explain

         * @param element

         */

        public static void addCommend(String explain,Element element){

            element.addComment(explain);

        }

        /**

             * 为节点添加属性

         * @param attName

         * @param attValue

         * @param element

         */

        public static void addAttribute(String attName,String attValue,Element element){

            element.addAttribute(attName, attValue);

        }

    }

asXML可以将文档或元素转换成一段xml字符串

        String docStr=doc.asXML();  //把xml文档转换成字符串

    System.out.println("docStr==="+docStr);

    String pdsStr=pds.asXML();   //把父节点转换成字符串

    System.out.println("pdsStr=="+pdsStr);

    //结果如插图所示

parseText完成将xml字符串转换成Doc的功能

String pdsStr=<PDS><HEAD><TRNCOD>交易代码</TRNCOD><LGNNAM>登陆名称</LGNNAM></HEAD></PDS>;

           Document docpds=null;

           try {

             docpds=DocumentHelper.parseText(docStr);

          docpds.setXMLEncoding("GBK");

         } catch (DocumentException e) {

        // TODO Auto-generated catch block

        e.printStackTrace();

         }

XMLWriter类可以把文档写入到文件中,并设置编码“GBK”

    public class JavaCreateDom4j {

                public static void main(String[] args){

            //引用http://www.blogjava.net/hoojo/archive/2011/08/11/356310.html

            Document doc=createDomFJ();

            doc.addComment("以GBK的编码");

            Element pds=doc.addElement("PDS");

            /*格式化输出*/

            org.dom4j.io.OutputFormat format=org.dom4j.io.OutputFormat.createPrettyPrint();//紧缩

            format.setEncoding("GBK");    //设置GBK编码

            Element head=pds.addElement("HEAD");

            Element trancod=head.addElement("TRNCOD");

            trancod.setText("交易代码");

        Element lgnnam=head.addElement("LGNNAM");

            lgnnam.setText("登陆名称");    

            try {

            XMLWriter writer=new XMLWriter(new OutputStreamWriter(new FileOutputStream("d:/test/xml/dom4jtest1.xml")),format);

                writer.write(doc);

               writer.close();

            } catch (IOException e) {

                // TODO Auto-generated catch block

                e.printStackTrace();

            }

        }

递归显示xml文档内容

01    //文件格式:

02    <?xml version="1.0" encoding="GBK"?>

03    <!--以GBK的编码-->

04    <PDS>

05      <HEAD>

06        <TRNCOD>交易代码</TRNCOD>

07        <LGNNAM>登陆名称</LGNNAM>

08      </HEAD>

09      <body>

10        <name>张学友</name>

11      </body>

12    </PDS>

13    

15    import java.io.File;

16    import java.io.FileInputStream;

17    import java.io.FileNotFoundException;

18    import java.util.List;

19    

20    import org.dom4j.Document;

21    import org.dom4j.DocumentException;

22    import org.dom4j.DocumentHelper;

23    import org.dom4j.Element;

24    import org.dom4j.Node;

25    import org.dom4j.io.SAXReader;

26    

27    

28    public class JavaCreateDom4j {

29        public static void main(String[] args){

30            //读取xml文档

31            SAXReader saxReader=new SAXReader();

32            Document doc=null;

33            try {

34                 doc =saxReader.read(new FileInputStream(new File("d:/test/xml/dom4jtest1.xml")));

35            } catch (FileNotFoundException e) {

36                // TODO Auto-generated catch block

37                e.printStackTrace();

38            } catch (DocumentException e) {

39                // TODO Auto-generated catch block

40                e.printStackTrace();

41            }

42             List<Element> listEl=doc.getRootElement().elements();

43             print(listEl);

44    }

45     /**

46         * 递归显示文档内容

47         * @param els  elements数组

48         */

49        public static void print(List<Element> els){

50            for(Element el:els){

51                System.out.println("##"+el.getName()+"--value=="+el.getTextTrim());

52                if(el.hasContent()){

53                    print(el.elements());

54                }

55            }

56        }

57    //结果见图”dom4j遍历xml文档“
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: