Dom4j解析XML应用总结

一.最常用到的API
1.getRootElement():隶属于Document类,返回XML文档的根元素
setRootElement(Element rootElement) :设置给定元素为相应文档的根元素
2.asXML():隶属于Node类,用于将XML转换为String
3.DocumentHelper类常用API:
createDocument():创建一个Document对象
parseText(String text):解析给定Xml的文本,生成Document对象。
 3.Element类中常用到API
attributeValue(String name) :获取元素String值。
elementIterator() :返回元素的所有子元素的Iterator迭代器。
elements() :返回元素包含所有子元素List。
getParent() :获取父元素Element。
getPath() :获取自己的xpath。
detach() :移除自己。
getName() :获取节点的名称。
selectNodes(String xpathExpression) :通过XPATH获取节点。
selectSingleNode(String xpathExpression) :通过XPATH获取一个节点。

getDocument() :作为一个Document返回。

二. 具体例子
1.XML文件内容:

<?xml version="1.0" encoding="utf-8"?>
<students>
    <student id="1" sex="female">
        <name>zhangsan</name>
        <age>21</age>
        <address>
            <add code="home">zhengzhou</add>
            <add code="company">HIST</add>
        </address>
    </student>
    <student id="2" sex="male">
        <name>wangwu</name>
        <age>16</age>
        <address>
            <add code="home">beijing</add>
            <add code="company">dongzhi</add>
        </address>
    </student>
</students>

2.测试代码:

public class ParseXmlExample {
    public void parseXmlDoc(String xmlFile){
        SAXReader saxReader=new SAXReader();
        Document doc=null;
        try {
            doc=saxReader.read(ParseXmlExample.class.getResourceAsStream(xmlFile));
        } catch (DocumentException e) {
            e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
        }
        Element rootElement=doc.getRootElement();
        for(Iterator iterator=rootElement.elementIterator();iterator.hasNext();){
            Element e_stu=(Element)iterator.next();
            String student=e_stu.getName();
            String id=e_stu.attributeValue("id");
            String sex=e_stu.attributeValue("sex");
            String name=e_stu.element("name").getText();
            Element address=e_stu.element("address");
            StringBuilder sb=new StringBuilder();
            sb.append(student+"\n");
            sb.append("\t"+"id:"+id+"\t"+"sex:"+sex+"\n");
            sb.append("\t"+"name:"+name+"\n");
            sb.append("\t"+address.getName()+"\n");
            for(Iterator ad=address.elementIterator();ad.hasNext();){
                Element e_com=(Element)ad.next();
                String code=e_com.attributeValue("code");
                String value=e_com.getText();
                sb.append("\t\t"+code+":"+value+"\n");
            }
            System.out.println(sb.toString());
        }
    }
    public static void main(String[] argv){
        new ParseXmlExample().parseXmlDoc("students.xml");
    }
}

运行结果:
student
id:1 sex:female
name:zhangsan
address
home:zhengzhou
company:HIST

student
id:2 sex:male
name:wangwu
address
home:beijing

company:dongzhi


将一段符合xml标准的string转换成xml文档中的element对象(使用dom4j)

	 private static Element getElementFromString(String s) {

		SAXReader builder = new SAXReader();
		Document doc = null;
		Element element = null;
		try {
			doc = builder.read(new StringReader(s));
		} catch (DocumentException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		if (doc != null) {
			element = doc.getRootElement();
		}

		return element;
	}


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值