JAVAEE

JAVAWeb——XML解析

2019-07-22  本文已影响0人  So_ProbuING

XML基本概念

Extensible Markup Language 可扩展标记语言

功能

xml与Html的区别

  1. xml标签都是自定义的,html的标签是预定义的
  2. xml的语法非常严格,html的语法比较松散
  3. xml是存储数据的,html是展示数据的

语法

基本语法

  1. xml文档的后缀名必须是 .xml
  2. xml第一行必须定义为文档声明
  3. xml文档中有且仅有一个根标签
  4. 属性值必须使用引号(单引号双引号都可以)引起来
  5. 标签必须正确关闭
  6. xml的标签名称区分大小写
<?xml version='1.0'?>
<users>
<user id='1'>
    <username>zhangsan</username>
    <age>22</age>
    <gender>male</gender>
</user>
<user id='2'>
    <username>lisi</username>
    <age>33</age>
    <gender>female</gender>
</user>
</users>

组成部分

  1. 文档声明
    1. 格式:<?xml 属性列表?>
    2. 属性列表
    • version:版本号 必须的属性
    • encoding:编码方式 告知解析引擎当前文档使用的字符集,默认值 ISO-8859-1
    • standalone:是否独立
      • yes:不依赖其他文件
      • no:依赖其他文件
  2. 指令(xml指定是为了结合css)
  3. 标签:标签名称 自定义的
    • 规则
      • 名称可以含字母、数字以及其他的字符
      • 名称不能以数字或者标点符号开始
      • 名称不能以字符 “xml”(或者 XML、Xml)开始
      • 名称不能包含空格
  4. 属性:id属性值唯一
  5. 文本:
    CDATA区:在CDATA区中的内容会被原样展示
    • 格式 <![CDATA[ CDATA区内容]]>

约束

分类

使用

DTD

Schema 比DTD约束更为复杂 约束性更强

xml解析

操作xml文档

解析xml的方式

DOM

将标记语言文档一次性加载进内存,在内存中形成dom树

SAX

逐行读取,基于事件驱动的。

xml常见的解析器

  1. JAXP:sun公司提供的解析器,支持dom和sax两种方式 性能低 不推荐使用
  2. D0M4J:一款非常优秀的解析器
  3. Jsoup:Java的HTML解析器,可直接解析HTML文本内容
  4. PULL:android操作系统内置解析器 SAX方式解析

Jsoup使用

步骤

  1. 导入jar包
  2. 获取Document对象
  3. 获取对应的标签
        //获取Document对象
        String path = JsoupDemo.class.getClassLoader().getResource("student.xml").getPath();
        Document document = Jsoup.parse(new File(path), "utf-8");
        Elements elements = document.getElementsByTag("name");
        for (Element element : elements) {
            String eleText = element.text();
            System.out.println("xml element" + eleText);
        }

对象的使用

  1. Jsoup:工具类,可以解析html或xml文档,返回document
  1. Document:文档对象 代表内存中的dom树
  1. Elements:元素Element对象的集合。可以当做ArrayList<Element>来使用
    1. 获取子元素对象
    • getElementById(String id) 根据id属性值获取Element对象
    • getElementsByTag(String tagName) 根据标签名称获取元素对象集合
    • getElementsByAttribute(String key) 根据属性名称获取元素对象集合
    • getElementsByAttributeValue(String key,String value) 根据对应的属性名和属性值获取元素对象集合
    1. 获取属性值
    • String attr(String key):根据属性名称获取属性值
    1. 获取文本内容
    • String text():获取文本内容
    • String html():获取标签体的所有内容(包括子标签的字符串内容)
  2. Element:元素对象
  3. Node:节点对象
    • 是Document和Element的父类

快捷查询方式

  1. selector:选择器
  1. XPath:XML路径语言
上一篇 下一篇

猜你喜欢

热点阅读