您的位置:首页 > 编程语言

在Dom4j中使用xpath--查看xml数据代码

2009-02-14 16:11 387 查看
最近项目需要操作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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: