关于DOM4J 解析和生成XML小Demo

生成和解析如下XML所需Java实例:
xml:

<?xml version="1.0" encoding="UTF-8"?>
<users>
    <user age="18">
        <name>Simon</name>
        <pass>123456</pass>
    </user>
    <user age="22">
        <name>Lucifer</name>
        <pass>654321</pass>
    </user>
</users>

Java生成代码如下:

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;

public class Demo{
        public String generateDocument() {
        Document document = DocumentHelper.createDocument();
        Element users = document.addElement("users");//添加users标签

        Element user1 = users.addElement("user");//添加user标签
        Element name1 = user.addElement("name");//添加name标签
        Element pass1 = user.addElement("pass");//添加pass标签

        user1.addAttribute("age","18");//为user添加属性age
        name1.setText("Simon");//为name标签添加内容
        pass1.setText("123456");//为pass标签添加内容

        Element user2 = users.addElement("user");//添加user标签
        Element name2 = user.addElement("name");//添加name标签
        Element pass2 = user.addElement("pass");//添加pass标签

        user2.addAttribute("age","22");//为user添加属性age
        name2.setText("Lucifer");//为name标签添加内容
        pass2.setText("654321");//为pass标签添加内容

        return document.asXML();//返回生成的XML文档(String类型)
    }

}

Java解析代码如下:

public void resolveDocument(String xml) throws DocumentException {
        try {
            Document document = DocumentHelper.parseText(xml);//根据传入的XML字符串获取文档
            Element users = document.getRootElement();//根据文档获取根标签users
            for (Iterator iter = users.elementIterator(); iter.hasNext(); ) {//生成迭代器,遍历users下所有节点
                Element user = (Element) iter.next();//获取到子节点user
                System.out.println("The age of this user is " + user.attributeValue("age"));//获取子节点user的age属性

                for (Iterator it = user.elementIterator(); it.hasNext(); ) {//生成迭代器,遍历user下所有节点
                    //获取当前节点及其内容
                    Element element = (Element) it.next();
                    String tag = element.getName();//获取当前标签名称
                    Object value1 = element.getData();//获取当前名称的值
                    String value2 = element.getStringValue();
                    String value3 = element.getText();

                    if ("name".equals(tag))
                        System.out.println("UserName is " + value1);
                    else
                        System.out.println("UserPass is " + value1);

                }
            }
        } catch (DocumentException e) {
            e.printStackTrace();
        }
    }

tips:
1、不要忘记添加DOM4J的相关JAR包和依赖包
2、XML传入途径有很多,可自行进行优化,注意相关Exception的添加即可。
3、 getData();getStringValue();getText();的区别在此赘述一下:
1)getData()是获取Object类型的结果,可自由转化成想要的类(Integer、String等)
2)getStringValue()和getText()区别就是一个是获取当前节点的内容,一个是获取当前节点及其子节点的内容,例如本例子中,user.getStringValue()输出为空 而 user.getText() 输出为 Simon123456。user.getData()输出同getStringValue()。

Hope Can Help!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值