java dom解析xml路径_java Dom 解析 XML 详细解答

zhangsan

32

home add

com add

lisi

22

home add

com add

com add

解析代码:

package com.topsoft.test;

import org.dom4j.io.SAXReader;

import org.dom4j.Document;

import org.dom4j.DocumentException;

import org.dom4j.Element;

import org.dom4j.Node;

import java.util.Iterator;

import java.util.List;

import java.io.InputStream;

/**

* Created by IntelliJ IDEA.

* User: leizhimin

* Date: 2008-3-26 15:53:51

* Note: Dom4j遍历解析XML测试

*/

public class TestDom4j {

/**

* 获取指定xml文档的Document对象,xml文件必须在classpath中可以找到

*

* @param xmlFilePath xml文件路径

* @return Document对象

*/

public static Document parse2Document(String xmlFilePath) {

SAXReader reader = new SAXReader();

Document document = null;

try {

InputStream in = TestDom4j.class.getResourceAsStream(xmlFilePath);

document = reader.read(in);

} catch (DocumentException e) {

System.out.println(e.getMessage());

System.out.println("读取classpath下xmlFileName文件发生异常,请检查CLASSPATH和文件名是否存在!");

e.printStackTrace();

}

return document;

}

public static void testParseXMLData(String xmlFileName) {

//产生一个解析器对象

SAXReader reader = new SAXReader();

//将xml文档转换为Document的对象

Document document = parse2Document(xmlFileName);

//获取文档的根元素

Element root = document.getRootElement();

//定义个保存输出xml数据的缓冲字符串对象

StringBuffer sb = new StringBuffer();

sb.append("通过Dom4j解析XML,并输出数据:\n");

sb.append(xmlFileName + "\n");

sb.append("----------------遍历start----------------\n");

//遍历当前元素(在此是根元素)的子元素

for (Iterator i_pe = root.elementIterator(); i_pe.hasNext();) {

Element e_pe = (Element) i_pe.next();

//获取当前元素的名字

String person = e_pe.getName();

//获取当前元素的id和sex属性的值并分别赋给id,sex变量

String id = e_pe.attributeValue("id");

String sex = e_pe.attributeValue("sex");

String name = e_pe.element("name").getText();

String age = e_pe.element("age").getText();

//将数据存放到缓冲区字符串对象中

sb.append(person + ":\n");

sb.append("\tid=" + id + " sex=" + sex + "\n");

sb.append("\t" + "name=" + name + " age=" + age + "\n");

//获取当前元素e_pe(在此是person元素)下的子元素adds

Element e_adds = e_pe.element("adds");

sb.append("\t" + e_adds.getName() + "\n");

//遍历当前元素e_adds(在此是adds元素)的子元素

for (Iterator i_adds = e_adds.elementIterator(); i_adds.hasNext();) {

Element e_add = (Element) i_adds.next();

String code = e_add.attributeValue("code");

String add = e_add.getTextTrim();

sb.append("\t\t" + e_add.getName() + ":" + " code=" + code + " value=\"" + add + "\"\n");

}

sb.append("\n");

}

sb.append("-----------------遍历end-----------------\n");

System.out.println(sb.toString());

System.out.println("---------通过XPath获取一个元素----------");

Node node1 = document.selectSingleNode("/doc/person");

System.out.println("输出节点:" +

"\t"+node1.asXML());

Node node2 = document.selectSingleNode("/doc/person/@sex");

System.out.println("输出节点:" +

"\t"+node2.asXML());

Node node3 = document.selectSingleNode("/doc/person[name=\"zhangsan\"]/age");

System.out.println("输出节点:" +

"\t"+node3.asXML());

System.out.println("\n---------XPath获取List节点测试------------");

List list = document.selectNodes("/doc/person[name=\"zhangsan\"]/adds/add");

for(Iterator it=list.iterator();it.hasNext();){

Node nodex=(Node)it.next();

System.out.println(nodex.asXML());

}

System.out.println("\n---------通过ID获取元素的测试----------");

System.out.println("陷阱:通过ID获取,元素ID属性名必须为“大写ID”,小写的“id”会认为是普通属性!");

String id22 = document.elementByID("22").asXML();

String id23 = document.elementByID("23").asXML();

String id24 = null;

if (document.elementByID("24") != null) {

id24 = document.elementByID("24").asXML();

} else {

id24 = "null";

}

System.out.println("id22= " + id22);

System.out.println("id23= " + id23);

System.out.println("id24= " + id24);

}

public static void main(String args[]) {

testParseXMLData("/person.xml");

}

}

运行结果:

通过Dom4j解析XML,并输出数据:

/person.xml

----------------遍历start----------------

person:

id=1 sex=m

name=zhangsan age=32

adds

add: code=home value="home add"

add: code=com value="com add"

person:

id=2 sex=w

name=lisi age=22

adds

add: code=home value="home add"

add: code=com value="com add"

add: code=com value="com add"

-----------------遍历end-----------------

---------通过XPath获取一个元素----------

输出节点:

zhangsan

32

home add

com add

输出节点: sex="m"

输出节点: 32

---------XPath获取List节点测试------------

home add

com add

---------通过ID获取元素的测试----------

陷阱:通过ID获取,元素ID属性名必须为“大写ID”,小写的“id”会认为是普通属性!

id22= home add

id23= com add

id24= null

Process finished with exit code 0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值