java+基于dom4j工具类_基于DOM4J的XML文件解析类

XML文件解析分四类方式:DOM解析;SAX解析;JDOM解析;DOM4J解析。其中前两种属于基础方法,是官方提供的平台无关的解析方式;后两种属于扩展方法,它们是在基础的方法上扩展出来的,只适用于java平台。目前已经完成一种方式的封装基于DOM的XML文件解析类。

语言我依然采用了Groovy模式,有兴趣的同学可以去看看:从Java到Groovy的八级进化论。还有更多高级特性实践可以在公众号里面搜Groovy即可,包括在JMeter中支持Java(即Groovy)脚本。

xml文件内容(已删节);

value="Export from zookeeper configuration group: [/xdfapp/DCSS] - [v1.0] - [unchange]."/>

value="Export from zookeeper configuration group: [/xdfapp/ailearn-work-svr] - [v1.0] - [unchange]."/>

工具类:

package com.fun.utils.xml

import com.fun.base.exception.FailException

import com.fun.frame.SourceCode

import org.dom4j.*

import org.dom4j.io.SAXReader

import org.slf4j.Logger

import org.slf4j.LoggerFactory

/**

* 基于dom4j解析xml工具类

*/

class XMLUtil2 extends SourceCode {

private static Logger logger = LoggerFactory.getLogger(XMLUtil2.class)

static List parse(String path) {

SAXReader reader = new SAXReader();

try {

Document document = reader.read(path.startsWith("http") ? new URL(path) : new File(path));

Element rootElement = document.getRootElement();

def iterator = rootElement.elementIterator()

List info = new ArrayList<>()

while (iterator.hasNext()) {

info << parseNode(iterator.next() as Element)

}

return info;

} catch (DocumentException e) {

logger.error("解析文件${path}失败!", e)

}

FailException.fail("解析文件${path}失败!")

}

static NodeInfo parseNode(Element e) {

if (e.getNodeType() != Node.ELEMENT_NODE) return null;

def info = new NodeInfo()

List attributes = e.attributes();

List attrs = new ArrayList<>()

attributes.each {

attrs << new Attr(it.name, it.value)

}

info.setAttrs(attrs)

List children = new ArrayList<>()

def iterator = e.elementIterator()

if (iterator.hasNext()) {

children << parseNode(iterator.next() as Element)

}

info.setChildren(children)

return info;

}

}

控制台输出:

内容较多,分成了头尾两张。

dee452b4e967170cdc14f6954f858c11.png

4e53622d55429e2d12361826ec286345.png

公众号FunTester首发,原创分享爱好者,腾讯云和掘金社区首页推荐,知乎七级原创作者,欢迎关注、交流,禁止第三方擅自转载。

FunTester热文精选

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值