zoukankan      html  css  js  c++  java
  • 《Java知识应用》Java Dom4j教程

    前言

    XML 被设计用来结构化、存储以及传输信息。由于XML的特性,所以XML格式经常被用来当成配置文件,传输数据的格式等。

    示例

    jar 下载:https://pan.baidu.com/s/1BjC34AYtjf17g5nZ2Hr4HA 提取码: 6yad

    import org.dom4j.Attribute;
    import org.dom4j.Document;
    import org.dom4j.DocumentException;
    import org.dom4j.DocumentHelper;
    import org.dom4j.Element;
    import org.dom4j.io.SAXReader;
    import org.dom4j.io.XMLWriter;
    
    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.OutputStreamWriter;
    import java.util.Iterator;
    import java.util.List;
    
    public class Dom4jDemo {
    
        /**
         * 将XML读取,然后将信息保存进Document中
         */
        public static Document XMLRead(String filename){
            Document document = null;
            try {
                SAXReader saxReader = new SAXReader();
                document = saxReader.read(new File(filename)); // 读取XML文件,获得document对象
                System.out.println(document.getRootElement().getName());
                readDocument(document);
            } catch (Exception ex) {
                ex.printStackTrace();
            }
            return document;
        }
    
        /**
         * 读取信息
         * @param document
         */
        public static void readDocument(Document document){
            Element root=document.getRootElement();
            Iterator it= root.elementIterator();//获取xml迭代
            while(it.hasNext()){
                Element ele=(Element)it.next();
                getNodes(ele);
            }
        }
    
        public static void getNodes(Element node){
            System.out.println("--------------------");
    
            //当前节点的名称、文本内容和属性
            System.out.println("当前节点名称:"+node.getName());//当前节点名称
            System.out.println("当前节点的内容:"+node.getTextTrim());//当前节点名称
            List<Attribute> listAttr=node.attributes();//当前节点的所有属性的list
            for(Attribute attr:listAttr){//遍历当前节点的所有属性
                String name=attr.getName();//属性名称
                String value=attr.getValue();//属性的值
                System.out.println("属性名称:"+name+"属性值:"+value);
            }
    
            //递归遍历当前节点所有的子节点
            List<Element> listElement=node.elements();//所有一级子节点的list
            for(Element e:listElement){//遍历所有一级子节点
                getNodes(e);//递归
            }
        }
    
        /**
         * 将Document对象中的信息写入XML文件中
         */
        public static void XMLWrite(Document document, String filename) {
            try {
                XMLWriter writer = new XMLWriter(new OutputStreamWriter(
                        new FileOutputStream(filename), "UTF-8"));
                writer.write(document);
                writer.close();
            } catch (Exception ex) {
                ex.printStackTrace();
            }
        }
    
        /**
         * 创建一个Document对象
         * @return
         */
        public static Document createDom() {
            Document document = DocumentHelper.createDocument();
            Element root = document.addElement("root");     // 创建根节点
            Element engNameElement = root.addElement("name");    //设置子元素
            engNameElement.addAttribute("like","apple");
            Element child2Element = engNameElement.addElement("see");  //设置子元素
            child2Element.setText("lily");  //设置子元素的值
            Element chiNameElement = root.addElement("id");
            chiNameElement.setText("1");
            /********删除节点********/
            root.remove(chiNameElement);
            return document;
        }
    
        /**
         * 传入字符串创建Document对象
         * @param text
         * @return
         */
        public static Document createDom(String text) {
            Document document = null;
            try {
                document = DocumentHelper.parseText(text);
            } catch (DocumentException e) {
                e.printStackTrace();
            }
            return document;
        }
    
        public static void main(String[] args) {
            /*******测试xml文件生成******/
            Document document = createDom();
            XMLWrite(document,"src\demo\knowledgepoints\dom4j\1.xml");
    
            /*******测试xml文件生成******/
            document = createDom("<root><name like="apple"><see>lily</see></name></root>");
            XMLWrite(document,"src\demo\knowledgepoints\dom4j\2.xml");
    
            /*******测试XML文件读取********/
            XMLRead("src\demo\knowledgepoints\dom4j\1.xml");
        }
    }

    运行结果:

    生成文件两个

    文件内容

    总结

    更多用法见官网:https://dom4j.github.io/

    This moment will nap, you will have a dream; But this moment study,you will interpret a dream.
  • 相关阅读:
    IDLHDF5读取与转换
    IDL计算儒略日
    DOMContentLoaded和Window: load event
    eventloop(事件循环机制)
    @types
    ES6 Module import & export
    switch case
    python基础
    react-hooks 官方文档笔记
    base64编码图片
  • 原文地址:https://www.cnblogs.com/jssj/p/13122194.html
Copyright © 2011-2022 走看看