dom4j解析和处理xml

本文将介绍
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文档“

你可能感兴趣的:(dom4j解析和处理xml)