美文网首页
Dom4j小记

Dom4j小记

作者: iMikasa_ | 来源:发表于2021-07-30 12:26 被阅读0次

DOM4J是一个开源的,基于Java的库来解析XML文档,它具有高度的灵活性,高性能和内存效率的API。这是java的优化,使用Java集合像列表和数组。它可以使用DOM,SAX,XPath和XSLT。它解析大型XML文档时具有极低的内存占用。

接下来我们开始使用它吧!

创建XML文档

package com.imikasa;

import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter;
import java.io.FileOutputStream;
import java.io.IOException;

public class Dom4jCreateUtil {
    public static void main(String[] args) throws IOException {
        Document document = DocumentHelper.createDocument();
        Element root = document.addElement("books");
        Element book = root.addElement("book").addAttribute("id","01");
        book.addElement("name").addText("ssa");
        book.addElement("price").addText("120");

        OutputFormat prettyPrint = OutputFormat.createPrettyPrint();
        XMLWriter xmlWriter = new XMLWriter(new FileOutputStream("book3.xml"),prettyPrint);
        xmlWriter.write(document);
    }
}

可以看出使用这种方法创建XML文档比使用JDOM更简洁

解析XML

package com.imikasa;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

import java.io.File;
import java.util.List;

public class Dom4hUtil {
    public static void main(String[] args) throws DocumentException {
        SAXReader saxReader =  new SAXReader();
        Document book3 = saxReader.read(new File("book3.xml"));
        Element rootElement = book3.getRootElement();
        List<Element> childElement = rootElement.elements();
        for (Element child : childElement) {
            //未知属性名情况下
            /*List<Attribute> attributeList = child.attributes();
            for (Attribute attr : attributeList) {
                System.out.println(attr.getName() + ": " + attr.getValue());
            }*/

            //已知属性名情况下
            System.out.println("id: " + child.attributeValue("id"));

            //未知子元素名情况下
            /*List<Element> elementList = child.elements();
            for (Element ele : elementList) {
                System.out.println(ele.getName() + ": " + ele.getText());
            }
            System.out.println();*/

            //已知子元素名的情况下
            System.out.println("name:" + child.elementText("name"));
            System.out.println("price:" + child.elementText("price"));
            System.out.println("===========");
        }
    }
}

相关文章

网友评论

      本文标题:Dom4j小记

      本文链接:https://www.haomeiwen.com/subject/scgqvltx.html