XML文档解析

目录

XML:

语法:

解析方式:

xml常见的解析器

对象的使用

快捷查询方式

使用Jsoup解析XML文档案例:


XML:

概念: Extensible Markup Language 可扩展标记语言:

  • 可扩展:标签都是自定义的。 
  • 功能: 存储数据( 配置文件 | 在网络中传输)

语法:

基本语法:

  1. xml文档的后缀名 .xml
  2. xml第一行必须定义为文档声明
  3. xml文档中有且仅有一个根标签
  4. 属性值必须使用引号(单双都可)引起来
  5. 标签必须正确关闭
  6. xml标签名称区分大小写

解析方式:

  1. DOM:将标记语言文档一次性加载进内存,在内存中形成一颗dom树
    • 优点:操作方便,可以对文档进行CRUD的所有操作
    • 缺点:占内存
  2. SAX:逐行读取,基于事件驱动的。
    • 优点:不占内存。
    • 缺点:只能读取,不能增删改

xml常见的解析器

  1. JAXP:sun公司提供的解析器,支持dom和sax两种思想
  2. DOM4J:一款非常优秀的解析器
  3. Jsoup:jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。
  4. PULL:Android操作系统内置的解析器,sax方式的。

Jsoup 导入依赖

<dependency>  
    <groupId>org.jsoup</groupId>  
    <artifactId>jsoup</artifactId>  
    <version>1.11.3</version>  
</dependency>

对象的使用

  1. Jsoup:工具类,可以解析html或xml文档,返回Document
    • parse:解析html或xml文档,返回Document
    • parse​(File in, String charsetName):解析xml或html文件的。
    • parse​(String html):解析xml或html字符串
    • parse​(URL url, int timeoutMillis):通过网络路径获取指定的html或xml的文档对象
  2. Document:文档对象。代表内存中的dom树
    • 获取Element对象
      • getElementById​(String id):根据id属性值获取唯一的element对象
      • getElementsByTag​(String tagName):根据标签名称获取元素对象集合
      • getElementsByAttribute​(String key):根据属性名称获取元素对象集合
      • getElementsByAttributeValue​(String key, String value):根据对应的属性名和属性值获取元素对象集合
  3. Elements:元素Element对象的集合。可以当做 ArrayList来使用
  4. Element:元素对象
    1. 获取子元素对象
      • getElementById​(String id):根据id属性值获取唯一的element对象
      • getElementsByTag​(String tagName):根据标签名称获取元素对象集合
      • getElementsByAttribute​(String key):根据属性名称获取元素对象集合
      • getElementsByAttributeValue​(String key, String value):根据对应的属性名和属性值获取元素对象集合
    2. 获取属性值
      • String attr(String key):根据属性名称获取属性值
    3. 获取文本内容
      • String text():获取文本内容
      • String html():获取标签体的所有内容(包括字标签的字符串内容)
  5. Node:节点对象
    • 是Document和Element的父类

快捷查询方式

  1. selector:选择器
  • 使用的方法:Elements select​(String cssQuery)
  • 语法:参考Selector类中定义的语法

使用Jsoup解析XML文档案例:

package xml;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

import java.io.File;
import java.io.IOException;
import java.util.Objects;

/**
 * @description XML解析
 * @auther: CDHong
 * @date: 2019/5/14-9:49
 **/
public class XmlParse {

    public static void main(String[] args) throws IOException {
        String path = Objects.requireNonNull(XmlParse.class.getClassLoader().getResource("mybatis-config.xml")).getPath();
        Document document = Jsoup.parse(new File(path), "utf-8");
        Elements setting = document.getElementsByTag("setting");
        for (Element element : setting) {
            String name = element.attr("name");
            System.out.println(name);
        }
        //选择器使用,基本上与CSS/JQuery大同小异
        Elements environment = document.select("environments>environment:first-child dataSource");  
System.out.println(environment);
    }
}

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CDHong.it

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值