XML解析之Dom4并将其解析成对应的实体类

前言  

  今天和师傅聊天,然后师傅给我布置了一个小Demo让我联系下,将XML解析成对应的实体类,我的初衷是分别用Dom4j还有SAX解析顺便对比下两种方式的区别以及是否有联系

第一种方式Dom4j的方式进行解析

  • 1.我采用Maven项目

    <dependency>
     <groupId>dom4j</groupId>
     <artifactId>dom4j</artifactId>
     <version>1.6.1</version> 
    </dependency>
    

      先将这个配置放到你的pom.xml中

  • 2.解决一个小问题在Maven项目中如何读取Resources下面的文件

      文件结构如下

      读取的代码如下

    @Test
    

    public void test1() {
    ClassLoader classLoader = TestReaderXML.class.getClassLoader();
    String resource = classLoader.getResource(“resources/parents.xml”).getFile();
    File file = new File(resource);
    if (file.exists()) {

    System.out.println("文件读取到了");
    return;
    }
    System.out.println("文件没有读取到");
    return;
    }
    

      运行结果

下面我们来继续

XML文件为:

<?xml version="1.0" encoding="UTF-8"?>
  <parents>
    <parent>
        <name>Mrs.zhang</name>
        <age>18</age>
        <address>东北</address>
    </parent>
    <parent>
        <name>Mrs.wang</name>
        <age>19</age>
        <address>河南</address>
    </parent>
        <parent>
        <name>Mrs.li</name>
        <age>20</age>
        <address>河北</address>
    </parent>
</parents>

测试方法为:

public class AnalyzeXMLofDom4j {

   public static void main(String[] args) {

   /** 将文件读取成一个File流文件 */
       ClassLoader classLoader = AnalyzeXMLofDom4j.class.getClassLoader();
       String resource = classLoader.getResource("resources/parents.xml").getFile();
       File file = new File(resource);

       // 创建SaxReader对象
       SAXReader reader = new SAXReader();

   try {
       // 通过read方法读取一个文件,转化成Document对象 
       Document document = reader.read(file);
       // 获取根节点元素对象
       Element root = document.getRootElement();
       /** 1. 将根节点的名字打出来*/
       System.out.println(root.getName());
       /** 2. 下面继续将所有的xml信息都读出来*/
       Iterator<?> iterator = root.elementIterator();
       while (iterator.hasNext()) {
           /** 将元素迭代起来 */
           Element childElement = (Element)iterator.next();
           /** 这样子是不是 复杂度很高呀   */
               /** parent 子元素集合 */
               Element elementName = childElement.element("name");
               String  valueName = elementName.getText();
               Element elementAge = childElement.element("age");
               String  valueAge = elementAge.getText();
               Element elementAddress = childElement.element("address");
               String  valueAddress = elementAddress.getText();
               System.out.println("---------");
               System.out.println(valueName);
               System.out.println(valueAge);
               System.out.println(valueAddress);
           } 
           System.out.println("下一个真正的子元素~");
   } catch (DocumentException e) {
       // TODO Auto-generated catch block
       e.printStackTrace();
   }
   }
}

运行结果为:

代码的百度云盘地址为: https://pan.baidu.com/s/1vEp5iHGV-8DkhD4zaE97lw
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值