最近项目需要操作xml文件,虽然以前也研究过dom4j,但一者是因为时间太长了,因没写文档,有些忘记了,再者想再整理下,优化下dom4j的使用.所以就查了些资料,然后进行了些总结.(ps:因文档网上已经很多了,所以在这里主要是我现在正使用的代码)
主要实现功能:
从示例xml中根据pid查找对应的data数据
<root name="数据" title="客户数据">
<item>
<date>2009-02-13</date>
<pid>1001</pid>
<data>9</data>
</item>
<item>
<date>2009-02-13</date>
<pid>1017</pid>
<data>594</data>
</item>
</root>
/**
* @author sech
*
* @version 1.0
*/
public class XmlDom4J {
private static final Log logger = LogFactory.getLog(XmlDom4J.class);
private Document document;
private List nodeList;
private Node root;
public XmlDom4J(String inputXml) {
try {
SAXReader saxReader = new SAXReader();
document = saxReader.read(inputXml);
root = document.selectSingleNode("//root"); //先将数据放入root,这样若多次取对应pid的数据,
//不用每次都先访问xml了
} catch (DocumentException e) {
logger.error(e.getMessage());
} catch (Exception e) {
logger.error(e.getMessage());
}
}
/**
* 取得对应pid的data
*/
private int getDataOfPid(String pid) {
nodeList = root.selectNodes("//item[pid='" + pid + "']/data");//取pid的data数据
if (nodeList != null && nodeList.size() > 0) {
Element e = (Element) nodeList.get(0);
return Integer.parseInt(e.getTextTrim());
}
return 0;
}
}
若xml数据改为:
<?xml version="1.0" encoding="gbk"?>
<root name="数据" title="客户数据">
<item>
<date>2009-02-13</date>
<data pid="1001">9</data>
</item>
<item>
<date>2009-02-13</date>
<data pid="1017">594</data>
</item>
</root>
则获取代码为:
/**
* 取得账号的data
*/
private int getDataOfPid2(String pid) {
nodeList = root.selectNodes("//item/data[@pid='" + pid + "']");//若item还有属性,
//则可以为"//item[@新属性='新属性值']/data[@pid='pid值']"
if (nodeList != null && nodeList.size() > 0) {
Element e = (Element) nodeList.get(0);
return Integer.parseInt(e.getTextTrim());
}
return 0;
}
分享到:
相关推荐
dom4j是一个简单而灵活的开放源码库中使用XML,XPath和XSLT的工作使用的Java使用DOM,SAX和JAXP的充分融合了Java集合框架平台。 内含: dom4j-2.0.0-ALPHA-2.jar dom4j-2.0.0-ALPHA-2-javadoc.jar dom4j-2.0.0-ALPHA...
dom4j和xpath的jar包,解析xml的最佳拍档.
xml+dom4j+xpath资料
本文介绍如何使用包含在dom4j中的解析器创建并修改XML文档。dom4j API包含一个解析XML文档的工具。本文中将使用这个解析器创建一个示例XML文档,然后使用同一个解析器修改。与W3C DOM API相比,使用dom4j所包含的...
dom4j是一个简单的开源库,用于处理XML、 XPath和XSLT,它基于Java平台,使用Java的集合框架,全面集成了DOM,SAX和JAXP。
用dom4j解析xml时,经常需要用到xpath,由于dom4j-1.6.1.jar不包括jaxen-1.1-beta-6.jar,导致使用xpath报错。 其中jaxen-full.jar是为了解决ava.lang.NoClassDefFoundError: org/jaxen/JaxenException错误。 下载的...
NULL 博文链接:https://wangweiwei358.iteye.com/blog/764548
dom4j 和dom4j 是一款比较好用的Xml解析工具jar,其中部分功能需要xpath的支持
该示例实现MAVEN来进行创建的,实现了dom4j操作XML文件,包括创建XML、动态创建XML节点、更新XML节点、删除XML节点。
Dom4j 解析XML 所使用的jar包,及添加XPath 支持所需要的 jar 包。具体使用可看我博客
dom4j和xpath必备jar包对xml文档进行解析的必须jar包!
讲解Dom4j如何利用XPath解析XML
使用dom4j解析xml时用到的jar包dom4j-1.6.1.zip xpath用到的jar包jaxen-1.1-beta-6.jar
JsoupXpath 是一款纯Java开发的使用xpath解析提取html数据的解析器,针对html解析完整实现了W3C XPATH 1.0标准语法,xpath的Lexer和Parser基于Antlr4构建,html的DOM树生成采用Jsoup,故命名为JsoupXpath. 为了在...
dom4j基础入门文档,与 W3C DOM API 相比,使用 dom4j 所包含的解析器的好处是 dom4j 拥有本地的 XPath 支持。
NULL 博文链接:https://bbsanwei.iteye.com/blog/266394
为了方便网友编程,将资源...org.dom4j.xpath Provides the core tools needed to use the XPath library org.dom4j.xpp Provides implementation classes to cleanly integrate dom4j with the XML Pull Parser XPP
XML节点访问的路径表达式【相对路径】和【绝对路径】的匹配原则
Dom4j_使用简介DOM4J是dom4j.org出品的一个开源XML解析包,它的网站中这样定义: Dom4j is an easy to use, open source library for working with XML, XPath and XSLT on the Java platform using the Java ...
使用dom4j解析XML时,要快速获取某个节点的数据,使用XPath是个不错的方法,dom4j的快速手册里也建议使用这种方式 执行时却抛出以下异常: Exception in thread "main" java.lang.NoClassDefFoundError: org/jaxen...