Dom4j封装和解析xml格式数据

13 篇文章 0 订阅
2 篇文章 0 订阅

           dom4j是一个Java的XML API,是jdom的升级品,用来读写XML文件的。dom4j是一个十分优秀的JavaXML API,具有性能优异、功能强大和极其易使用的特点。

首先导入依赖:

<!-- https://mvnrepository.com/artifact/org.dom4j/dom4j -->
        <dependency>
            <groupId>org.dom4j</groupId>
            <artifactId>dom4j</artifactId>
            <version>2.1.1</version>
        </dependency>

一,解析

现需要解析一个xml格式的字符串(xmltest),例如:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<permission>
	<business>
		<businessid>190821111342002710</businessid>
		<citemid></citemid>
		<citemversion></citemversion>
		<permid>170031205GG90618001</permid>
		<largeitemid>170031205GG90618</largeitemid>
		<smallitemid>001</smallitemid>
		<smallitemname>供暖竣工验收</smallitemname>
	</business>
	<forms>
		<form>
			<dataid>20190821111345106610</dataid>
			<dataxml>
			    <data>
				<PROJECTNAME><![CDATA[工程建设项目]]></PROJECTNAME>
				<PROJECT_CODE><![CDATA[2019-410182-54-02-031491]]></PROJECT_CODE>
				<INC_JGMC><![CDATA[123123]]></INC_JGMC>
				<FDDBR><![CDATA[郑测试]]></FDDBR>
				<FDDBR_SFZ><![CDATA[410823188888888]]></FDDBR_SFZ>
				<JCDWMC><![CDATA[]]></JCDWMC>
			    </data>
			</dataxml>
			<formid>20190628153137147025</formid>
			<formtype>0</formtype>
			<formver>1.0</formver>
		</form>
	</forms>
</permission>

解析:

                    Document doc=null;
                    // 下面的是通过解析xml字符串的
                    doc = DocumentHelper.parseText(xmltest); // 将字符串转为XML
                    //获取根节点元素对象
                    Element root = doc.getRootElement(); // 获取根节点 
                     //获得根节点下面的子节点
                    String str=root.element("business").elementText("smallitemname");
                    System.out.println(str);

以上只是个实例,只取到了xml节点的值,开发过程中具体情况请具体对待,

二,封装

假如已经规定了封装数据格式如:

<node>
    <nodecode><![CDATA[环节代码]]></nodecode>
    <nodename><![CDATA[环节名称]]></nodename>
    <version><![CDATA[数据版本号]]></version>
    <sn><![CDATA[序号]]></sn>
    <operator><![CDATA[环节处理人]]></operator>
    <operatorduty><![CDATA[环节处理人职务名称]]></operatorduty>
    <deptcode><![CDATA[环节处理部门组织机构代码 (如果为跨层级业务为必填)]]></deptcode>
    <handletime><![CDATA[环节处理时间]]></handletime>
    <handlestate><![CDATA[环节处理状态]]></handlestate>
    <handleadvice><![CDATA[环节处理意见]]></handleadvice>
    <prenodecode><![CDATA[上一环节代码]]></prenodecode>
    <nextnodecode><![CDATA[下一环节代码]]></nextnodecode>
    <completeresultscode><![CDATA[办结结果代码]]></completeresultscode>
    <nodeform><![CDATA[环节表单信息]]></nodeform>
</node>

封装数据:

  //封装xmldoc
            Document doc= DocumentHelper.createDocument();
            Element rootElement=doc.addElement("node");
            rootElement.addElement("nodecode").addText("环节代码");
            rootElement.addElement("nodename").addText("环节名称");
            rootElement.addElement("version").addText("数据版本号");
            rootElement.addElement("sn").addText("");
            rootElement.addElement("operator").addText("");
            rootElement.addElement("operatorduty").addText("");
            rootElement.addElement("deptcode").addText("");
            rootElement.addElement("handletime").addText("");
            rootElement.addElement("handlestate").addText("");
            rootElement.addElement("handleadvice").addText("");
            rootElement.addElement("prenodecode").addText("");
            rootElement.addElement("nextnodecode").addText("");
            rootElement.addElement("completeresultscode").addText("");
            rootElement.addElement("nodeform").addText("");

            String  str = doc.asXML();
            System.out.println(str);

输出示例:

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用dom4j解析xml生成对象的步骤如下: 1.引入dom4j的jar包 2.创建SAXReader对象 3.使用SAXReader的read方法读取xml文件,生成Document对象 4.获取根节点 5.遍历根节点的子节点,将每个节点的属性值封装到对应的Java对象中 下面是一个示例代码: ``` // 引入dom4j的jar包 import org.dom4j.Document; import org.dom4j.Element; import org.dom4j.io.SAXReader; // 定义Java对象 public class Person { private String name; private int age; // getter和setter方法 } // 解析xml文件生成对象的方法 public static List<Person> parseXml(String filePath) throws Exception { List<Person> personList = new ArrayList<>(); SAXReader saxReader = new SAXReader(); Document document = saxReader.read(new File(filePath)); Element rootElement = document.getRootElement(); List<Element> personElements = rootElement.elements("person"); for (Element personElement : personElements) { Person person = new Person(); person.setName(personElement.attributeValue("name")); person.setAge(Integer.parseInt(personElement.attributeValue("age"))); personList.add(person); } return personList; } ``` 在上述示例代码中,我们定义了一个Person类,并且编写了一个parseXml方法用于解析xml文件并生成Person对象。在方法中,我们首先创建了一个SAXReader对象,然后使用它的read方法读取xml文件并生成Document对象。接着,我们获取了xml文件的根节点,并遍历了它的所有子节点。在遍历过程中,我们使用每个节点的属性值来初始化一个Person对象,并将它添加到personList中。最后,我们返回personList,即可得到解析后的结果。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值