XML

xml概念

  • 可扩展标记语言 extensible
  • 作用:1 配置文件 2 传输 3存储
  • 特点:
    后缀:.xml
    声明必须第一行
    只有一个根标签
    标签闭合
    属性用引号
    区分大小写
  • xml出现的历史:html 不严谨,各个浏览器引擎解析不一样(各种简化),W3C为了规范,想用更严谨的xml代替html,但是没有成功,转而跟property竞争。
    优势:可以配置复杂的信息
  • 传输用json
  • 两种书写方式:
<student>
<name>jack</name>
</student>

<student name=’jack’></student> 属性值必须用引号

xml内容

  • 声明:<?xml version="1.0" encoding="UTF-8"?>
  • 指令:<?xml-stylesheet type="text/css" href="a.css" ?> 可以改变xml的样式
  • 标签:命名规格跟Java查不多,不能用xml做标签
  • ID值唯一
  • 文本
  • 注释和html的一样
  • CDATA 原样输出: <![CDATA[ 数据 ]]>

约束:

  • 规定和xml的书写规范,主要是为了让按照制定者的规则写配置文件
    分类: DTD Schema

DTD:

  • 引入dtd文档到xml文档中
    – 内部dtd:将约束规则定义在xml文档中
    – 外部dtd:将约束的规则定义在外部的dtd文件中
		本地:<!DOCTYPE 根标签名 SYSTEM "dtd文件的位置">
		网络:<!DOCTYPE 根标签名 PUBLIC "dtd文件名字" "dtd文件的位置URL">
		记忆:从dtd文件的 跟标签为位置开始引用规则
<!ELEMENT students(student*)> <!ELEMENT student(name,age,sex)> <!ELEMENT name(#PCDATA)> <!ELEMENT age(#PCDATA)> <!ELEMENT sex(#PCDATA)> <!ELEMENT student number ID #REQUIRED>

xml文档第一句是声明,第二句就是引入DTD文件

DTD缺点:没有对文本进行过校验

Schema

  • 以.xsd结尾的文件 ,本质就是xml
  • 引入方式
	xmlns :xml命名空间
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 指定编写的规则
	xmlns:tx="命名空间(约束的名字)"
	xsi:schemaLocation=" ”

解析

  • 过程:读到内存—>硬盘持久化
  • DOM解析:全部加载到内存以后才解析,dom树的文档格式,比原有的文件大1000-10000 倍,方便定位,可以crud.
  • SAX解析:逐行驱动事件,内存中只有一条语句,所以基本不占内存,适用于手机端,不能增删改

Jsoup

  • Jsoup :工具类,解析返回的是dom树。(完整的网页的html代码)

  • 过程;
    1获取xml的路径
    String path = Demo.class.getClassLoader().getResource(“students.xml”).getPath();
    2 解析xml
    Document document = Jsoup.parse(new File(path), “utf-8”);
    3 根据document 查询需要的信息

  • Document的方法 返回element
    document.getElementById(“a001”);
    document.getElementsByAttribute(“id”);
    document.getElementsByAttributeValue(“id”,“a001”);
    document.getElementsByTag(“student”);
    Elements select(“CSS选择器”);

  • Element和Elements的方法
    size();//获取长度
    get(int index)//获取指定位置的元素
    String attr(“属性名”);//根据属性名获取属性值
    String text();//获取标签中的所有的纯文本内容
    String html();//获取标签中的内容 获取的是标签中的内容,不包含标签
    elements.getElementById(“a001”); 包含id标签
    elements.getElementsByAttribute(“id”);
    elements.getElementsByAttributeValue(“id”,“a001”);
    elements.getElementsByTag(“student”);
    **document继承element
    **node
    **parse的用法
    1 parse(path,编码)
    2 parse(url,2000ms) 解析网页
    3 parse(String)
    XPATH语法
    JXDocument jxDocument = new JXDocument(document);
    jxDocument.selN() 返回的是一个结点的列表
    Node变成元素:node.getelement()
    获取所有的标签 //标签名
    获取子标签 /标签名 //aaa/bbb
    获取属性 @属性名 只有有这个属性就可以获取到
    标签名[@属性名=‘值’] 获取属性=“值”的标签

String path = Demo.class.getClassLoader().getResource(“students.xml”).getPath();
Document document = Jsoup.parse(new File(path), “utf-8”);
JXDocument jxDocument = new JXDocument(document);
List jxNodes = jxDocument.selN("//student[@id=‘a002’]");
for (JXNode jxNode : jxNodes) {
System.out.println(jxNode.getElement().attr(“name”));
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值