您的位置:首页 > 其它

解析xml(使用Dom4j)--简单高效

2017-03-16 14:34 489 查看
今天朋友让我写一个解析xml的Demo,下面总结下:

我使用的是dom4j来解析的,所以得首先引用dom4j-1.6.1.jar。一种是解析xml文件,一种是解析xml格式字符串。

然后代码如下,要解析的xml文件在附件中。

package util;

import java.io.File;
import java.net.URISyntaxException;
import java.net.URL;
import java.util.Iterator;
import java.util.List;
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;

/**
* <B>说 明</B>:
*
* @author 作 者 名:郑雄伟<br/>
*         E-mail :zhengxiongwei89@163.com
*
* @version 版 本 号:V1.0.<br/>
*          创建时间:2017年3月16日 上午11:33:55
*/
public class Dom4jDemo {

/**
* 解析xml文件
*
* @param xmlFile
*/
private static void parseXmlFile(File xmlFile) {

try {
SAXReader reader = new SAXReader();
// 读取文件 转换成Document
Document document = reader.read(xmlFile);
// 获取根节点元素对象
Element root = document.getRootElement();
// 遍历
listNodes(root);
} catch (DocumentException e) {
e.printStackTrace();
}

}

/**
* 解析xml字符串
*
* @param xmlStr
*/
private static void parseXmlStr(String xmlStr) {

try {
Document document = DocumentHelper.parseText(xmlStr);
// 获取根节点元素对象
Element root = document.getRootElement();
// 遍历
listNodes(root);
} catch (DocumentException e) {
e.printStackTrace();
}

}

@SuppressWarnings("unchecked")
public static void listNodes(Element node) {
System.out.println("当前节点的名称:" + node.getName());
// 首先获取当前节点的所有属性节点
List<Attribute> list = node.attributes();
// 遍历属性节点
for (Attribute attribute : list) {
System.out.println("属性" + attribute.getName() + ":"
+ attribute.getValue());
}
// 如果当前节点内容不为空,则输出
if (!(node.getTextTrim().equals(""))) {
System.out.println(node.getName() + ":" + node.getText());
}
// 同时迭代当前节点下面的所有子节点
// 使用递归
Iterator<Element> iterator = node.elementIterator();
while (iterator.hasNext()) {
Element e = iterator.next();
listNodes(e);
}
}

public static void main(String[] args) {

// 解析xml文件
URL resource = Dom4jDemo.class.getResource("NewFile.xml");
try {
File xmlFile = new File(resource.toURI());
parseXmlFile(xmlFile);
} catch (URISyntaxException e) {
e.printStackTrace();
}

// 解析xml字符串
String xmlStr = "<?xml version='1.0' encoding='UTF-8'?><ECInformation Date='2016-07-26 09:35:31'><ECInfo><ProjectName>001</ProjectName><ECType>量产前设变</ECType><ECRNumber>shanxi</ECRNumber><ECNNumber>XXX</ECNNumber><ECNCreatorName>马大哥</ECNCreatorName><ECNCreatorCode>40545</ECNCreatorCode><ECTransferInfoTables><ECTransferInfoTable><ChangeObjects><ChangeObj><ChangeBefore><ChangeBeforePartNumber>123</ChangeBeforePartNumber><ChangeBeforePartName>河北</ChangeBeforePartName></ChangeBefore><ChangeAfter><ChangeAfterPartNumber>1231-AA</ChangeAfterPartNumber><ChangeAfterPartName>重庆</ChangeAfterPartName></ChangeAfter></ChangeObj></ChangeObjects></ECTransferInfoTable></ECTransferInfoTables></ECInfo></ECInformation>";
parseXmlStr(xmlStr);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: