前言
在项目开发中,我们会遇到特殊的开发场景,但是这种情况并都不常用,于是本人将自己工作中所用的代码记录下来,旨在记录工具类使用方法和技术分享。
一、Dom4j是什么?
dom4j是一个用于读取、操作和输出XML文档的Java库,是开源的,基于Java的XML API。它具有良好的性能、易用性和灵活性,支持包括XPath和XSLT在内的多种标准,同时还支持自定义接口,当处理复杂文档时非常有用。
二、Dom4j的特点是什么?
Dom4j的特点主要包括以下几点:
- 本质上是一个树的视图
- 强大的XPath支持
- 支持多种输入和输出格式
- 支持namespace
- 易于使用和扩展
三、项目中的应用
1、首先导入依赖,
<dependency>
<groupId>dom4j</groupId>
<artifactId>dom4j</artifactId>
<version>1.6.1</version>
</dependency>
2、xml案例
<?xml version="1.0" encoding="UTF-8"?>
<FDSearchResult version="2.0" xmlns="http://2211">
<searchID>CA9466D6-DDC0-0001-44E4-3123131</searchID>
<responseStatus>true</responseStatus>
<responseStatusStrg>OK</responseStatusStrg>
<numOfMatches>12</numOfMatches>
<totalMatches>12</totalMatches>
<MatchList>
<MatchElement>
<FDID>1</FDID>
<bornTime>2000-01-01</bornTime>
<name>测试</name>
<sex>male</sex>
<province></province>
<city></city>
<certificateType></certificateType>
<certificateNumber></certificateNumber>
<picURL>1312321312312</picURL>
<PID>1</PID>
</MatchElement>
</MatchList>
</FDSearchResult>
3、项目中使用的解析代码
//调接口返回xml信息,我这里xml是字符串形式的,应用的话根据实际xml的类型做调整
String xmlData = isapi.sdk_isapi(userId, requestUrl, searchByName_XmlCreat(faceData));
//使用dom4j语法
SAXReader reader = new SAXReader();
Document doc = reader.read(new ByteArrayInputStream(xmlData.getBytes()));
//获取根标签
Element root = doc.getRootElement();
Element foo;
//遍历根标签下的每个
for (Iterator r = root.elementIterator("MatchList"); r.hasNext(); ) {
foo = (Element) r.next();
//遍历指定标签下的每个
for (Iterator item = foo.elementIterator("MatchElement"); item.hasNext(); ) {
foo = (Element) item.next();
FaceInfo faceInfo = new FaceInfo();
//获取指定标签的值
faceInfo.setName(foo.elementText("name"));
faceInfo.setFdId(foo.elementText("FDID"));
faceInfo.setBornTime(foo.elementText("bornTime"));
faceInfo.setSex(foo.elementText("sex"));
faceInfo.setProvince(foo.elementText("province"));
faceInfo.setCity(foo.elementText("city"));
faceInfo.setCertificateType(foo.elementText("certificateType"));
faceInfo.setCertificateNumber(foo.elementText("certificateNumber"));
faceInfo.setPicURL(foo.elementText("picURL"));
faceInfoList.add(faceInfo);
}
}