dom4j解析xml中指定元素下内容
2015-06-04 14:59
267 查看
需求:XML为如下样式,现在我只想取得timer下面的5000和60000.
解决办法如下:
<?xml version="1.0" encoding="UTF-8"?>
<we>
<message id="1001">
<String>Id</String>
<String>name</String>
<String>sfz</String>
<String>w</String>
</message>
<!-- 定时任务设置 -->
<timer>
<delay>5000</delay>
<period>60000</period>
</timer>
</we>
/**
* 解析指定xml路径下的信息
*
* @param fileName
* xml文件路径
* @param xmlPath
* xml里元素路径
* @return 返回map,如map.get("delay")就可取到下面的5000
* <timer>
<delay>5000</delay>
<period>60000</period>
</timer>
*/
public Map parserXml(String fileName, String xmlPath) {
Document document;
Map map = new HashMap();
try {
document = getDocument(fileName);
List list = document.selectNodes(xmlPath);
for (int i = 0; i < list.size(); i++) {
Element timer = (Element) list.get(i);
for(Iterator j = timer.elementIterator();j.hasNext();){
Element node = (Element) j.next();
//System.out.println(node.getName() + ":" + node.getText());
map.put(node.getName(), node.getText());
}
}
} catch (DocumentException e) {
e.printStackTrace();
}
return map;
}
private Document getDocument(String xmlFile) throws DocumentException {
SAXReader reader = new SAXReader();
return reader.read(xmlFile);
}
解决办法如下:
<?xml version="1.0" encoding="UTF-8"?>
<we>
<message id="1001">
<String>Id</String>
<String>name</String>
<String>sfz</String>
<String>w</String>
</message>
<!-- 定时任务设置 -->
<timer>
<delay>5000</delay>
<period>60000</period>
</timer>
</we>
/**
* 解析指定xml路径下的信息
*
* @param fileName
* xml文件路径
* @param xmlPath
* xml里元素路径
* @return 返回map,如map.get("delay")就可取到下面的5000
* <timer>
<delay>5000</delay>
<period>60000</period>
</timer>
*/
public Map parserXml(String fileName, String xmlPath) {
Document document;
Map map = new HashMap();
try {
document = getDocument(fileName);
List list = document.selectNodes(xmlPath);
for (int i = 0; i < list.size(); i++) {
Element timer = (Element) list.get(i);
for(Iterator j = timer.elementIterator();j.hasNext();){
Element node = (Element) j.next();
//System.out.println(node.getName() + ":" + node.getText());
map.put(node.getName(), node.getText());
}
}
} catch (DocumentException e) {
e.printStackTrace();
}
return map;
}
private Document getDocument(String xmlFile) throws DocumentException {
SAXReader reader = new SAXReader();
return reader.read(xmlFile);
}
public static void main(String[] args) { Dom4jDemo d = new Dom4jDemo(); String relativelyPath = new File(Dom4jDemo.class.getResource("/") .getPath()).getParent() + File.separator + "src\\sysConfig.xml"; System.out.println(relativelyPath); // d.createXml(relativelyPath); /*List list = d.parserXml(relativelyPath); for (int i = 0; i < list.size(); i++) { System.out.println(list.get(i)); }*/ String xmlPath = "/we/timer"; Map map = d.parserXml(relativelyPath, xmlPath); System.out.println(map.get("delay")); }
相关文章推荐
- java使用dom4j操作xml示例代码
- 深入dom4j使用selectSingleNode方法报错分析
- dom4j从jar包中读取xml文件的方法
- java dom4j解析xml用到的几个方法
- java使用xpath和dom4j解析xml
- 在java中使用dom4j解析xml(示例代码)
- Dom4j的使用(全而好的文章)
- dom4j读写xml文件
- 解决dom4j解析xml文件时访问DTD文件问题
- 学习:Dom4j
- dom4j的快速入门——冰云编写
- DOM4J合并多个xml文件到一个Document
- dom4j创建及解析XML文件
- dom4j解析xml实例
- Dom4j解析XML文档 —— 增删改查
- 解析XML—— Dom4j的SAX解析
- JavaWEB.xml解析技术SAX&DOM(学习笔记)
- 用dom4j实现XML的遍历,增加namespace, 设置standalone="yes" 等操作
- 详解Java解析XML的四种方法
- 利用Dom4j+xpath读取XML文档