10. 集成`dom4j`

1. 核心依赖
  1. 依赖

    <dependency>
        <groupId>org.dom4j</groupId>
        <artifactId>dom4j</artifactId>
        <version>2.1.1</version>
    </dependency>    
    
2. 使用
  1. 常用API

    // 解析器: org.dom4j.io.SAXReader;
    SAXReader reader = new SAXReader();
    
    // spring 读取 resources 下的文件
    // org.springframework.core.io.ClassPathResource;
    InputStream inputStream = new ClassPathResource("test/test.xml").getInputStream();
    
    // 获取 document 对象: org.dom4j.Document;
    Document document = reader.read(inputStream);
    
    // 获取根标签:org.dom4j.Element;
    Element root = document.getRootElement();
    
    // 获取标签名字
    element.getName()
    
    // 获取 element 对象的迭代器
    Iterator<Element> elementIterator = element.elementIterator();
    
    // 获取第一个指定名称的子标签
    element.element("name")
    
    // 获取指定名称的所有子标签
    element.elements("name")
    
    // 获取所有子标签
    element.elements()
    
    // 获取标签名为 name 的子标签的内容,去掉空格、换行符
    element.elementTextTrim("name")
    
    // 获取标签名为 name 的子标签的内容
    element.elementText("name")
    
    // 获取内容
    element.getText()
    
    // 获取内容,去掉空格、换行符
    element.getTextTrim()
    
    // 获取名为 name 的属性名的值
    element.attributeValue("name")
    
    // 获取所有的 属性对象
    element.attributes()
    
    // 获取属性对象的属性名
    attribute.getName()
    
    // 获取属性对象的值
    attribute.getValue()
    
  2. 栗子

    1. xml(resources/sql/test.xml)

      <?xml version="1.0" encoding="utf-8" ?>
      <dataSources>
          <dataSource>
              <description>dom4j-测试查询</description>
              <sql id="001" name="sql" haha="2">
                  select * from
                  dual a
                  left join dual b
                  on a.pkid = b.pkid
              </sql>
          </dataSource>
      </dataSources>        
      
    2. 测试

      public void test() throws DocumentException, IOException {
          // 获取 xml 解析器
          SAXReader reader = new SAXReader();
          
          // 将 resources 下的 sql/test.xml 转换为输入流
          InputStream inputStream = new ClassPathResource("sql/test.xml").getInputStream();
          
          // 将输入流转换为 文件对象
          Document document = reader.read(inputStream);
          
          // 获取根标签对象
          Element root = document.getRootElement();
          
          // 获取根标签对象的 迭代器
          Iterator<Element> elementIterator = root.elementIterator();
          
          while (elementIterator.hasNext()) {
              Element element = elementIterator.next();
              Iterator<Element> iterator = element.elementIterator();
             
              while (iterator.hasNext()) {
                  Element next = iterator.next();
                  // System.out.println(next.getText());
                  
                  // 获取内容,并去掉空格、换行符、回车符等
                  System.out.println(next.getTextTrim());
              }
              
              // 获取 sql 子标签的内容,并去掉空格、换行符、回车符等
              // System.out.println(element.elementTextTrim("sql"));
              
              // 先获取名为 sql 的子标签,然后再获取内容,并去掉空格、换行符、回车符等
              // System.out.println(element.element("sql").getTextTrim());
              
              Element sql = element.element("sql");
              
              // 获取 sql 子标签的所有属性
              List<Attribute> attributes = sql.attributes();
              
              // 获取名为 id 的属性值
              System.out.println(sql.attributeValue("id"));
              
              for (Attribute attribute : attributes) {
                  // 打印 属性名 + 属性值
                  System.out.println(attribute.getName()+ " = " + attribute.getValue());
              }
      }
      
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值