加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

XML专栏-dom4j使用

发布时间:2020-12-16 23:44:45 所属栏目:百科 来源:网络整理
导读:dom4j是一个dom4j.org出品的开源的库,常用于解析xml,dom4j最大的特点是简单易用 。这里介绍一下dom4j使用: ? 1.获取document 首先创建SAXReader对象reader,然后使用reader读取xml对应Url或者对应InputStream流。 URL url = XmlUtil.class.getClassLoader

dom4j是一个dom4j.org出品的开源的库,常用于解析xml,dom4j最大的特点是简单易用。这里介绍一下dom4j使用:

?

1.获取document

首先创建SAXReader对象reader,然后使用reader读取xml对应Url或者对应InputStream流。

URL url = XmlUtil.class.getClassLoader().getResource(filePath);
SAXReader reader = new SAXReader();
Document document = reader.read(url);

?

2.使用Iterator遍历document的元素和属性

首先获取root根元素,然后获取根节点的Iterator,使用Iterator遍历元素子元素

Element root = document.getRootElement();
/* 遍历所有子元素 */
for(Iterator i = root.elementIterator();i.hasNext();){
    Element element = (Element) i.next();
}
/* 遍历所有指定名称子元素 */
for (Iterator i = root.elementIterator("div"); i.hasNext();) {
    Element dir = (Element) i.next();
}
/* 遍历元素下所有属性 */
for (Iterator i = root.attributeIterator();i.hasNext();){
    Attribute attr = (Attribute) i.next();
}

?

?3.使用xpath获取元素和属性

List<Node> list = document.selectNodes("/root/dir"); //获取元素列表
Node node = document.selectSingleNode("/root/dir[@id=‘node‘]"); //获取单个元素
String attr= node.valueOf("@style"); //获取元素属性

??

4.fast looping

遍历很大的xml文件时,使用?Iterator会创建大量的Iterator Object,消耗内存,这时可以考虑使用递归方式遍历xml文件。

public void treeWalk(Element element){
    for (int i=0,size=element.nodeCount(); i < size; i++){
        Node nodetemp = element.node(i);
        if (nodetemp instanceof Element){
            treeWalk((Element) nodetemp);
        }else {
            //do something
        }
    }
}
public void treeWalk(Document document){
    Element root = document.rootElement();
    treeWalk(root);
}

?

5.创建document

使用DocumentHelper创建新的document,在document下添加root元素,然后可以在root元素下创建各种节点。

Document newDocument = DocumentHelper.createDocument();
Element newRoot = newDocument.addElement("root");
Element author1 = newRoot.addElement( "author" )
        .addAttribute( "name","James" )
        .addAttribute( "location","UK" )
        .addText( "James Strachan" );

Element author2 = newRoot.addElement( "author" )
        .addAttribute( "name","Bob" )
        .addAttribute( "location","US" )
        .addText( "Bob McWhirter" );

?

6.将document写入文件

使用XMLWriter将document写入文件,实际使用需要在finally中关闭writer。

XMLWriter writer = new XMLWriter(new FileWriter(filepath));
writer.write(document);
writer.close();

?

7.格式化输出document

创建带有OutputFormat的XMLWriter可以实现对document的格式化输出。

OutputFormat format = null;

format = OutputFormat.createPrettyPrint();//排版 XMLWriter writer = new XMLWriter(System.out,format); writer.write(document);
format
= OutputFormat.createCompactFormat();//紧凑 writer = new XMLWriter(System.out,format); writer.write(document);

?

8.document转成String

String xmlText = document.asXML();

?

?

?

代码摘自官方文档? ? ? ??? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??

参考文献:https://github.com/dom4j/dom4j/wiki

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读