1.什么是xml 与html的区别
1.xml是一种可扩展的标记语言 html是超文本标记语言
2.xml标签没有被预定义 html标签事先规定好
3.xml的作用是存储数据 html的作用是在浏览器显示数据
4.xml的语法严格 html的语法不严格
注!!!!!!!!!!!!!!:xml不是html的替代
2.基本语法
文档后缀名 .xml
第一行必须写文档声明
必须有且只有一个根标签
属性值必须有引号
标签一定要闭合
实体引用:
注释:在 XML 中,只有字符 “<” 和 “&” 确实是非法的。大于号是合法的,但是用实体引用来代替它是一个好习惯。
重点:xml区分大小写!!!!!!!!!!!
3.xml文件的组成
1.文档声明:
version 版本号
encoding 编码格式
standalone 是否依赖其他文件 yes/no (现在大部分xml文件都不写)
例:
<?xml version="1.0" encoding="UTF-8" standalone = "no" ?>
2.指令:早期为了干掉html,用来展示数据用(现在一般不写)
3.标签 (一定要有根标签)
4.属性
5.文本
例:
<students>
<student number="01">
<name>
<xing>
迪丽
<ming>
热吧
</ming>
</xing>
</name>
<age>18</age>
<sex>女</sex>
</student>
<student number="02">
<name>古力娜扎</name>
<age>18</age>
<sex>女</sex>
</student>
</students>
4.xml文件的约束
根据上图,xml文件又程序员书写,由产品解析,由于xml文件的标签是自定义的,所以需要一个准则来书写标签,不然产品怎么解析?
所以约束的作用就是规范xml文档,由约束告诉程序员应该写什么,怎么写。
4.1两种约束
DTD约束:语法简洁,共能比较单一。
Schema约束:语法复杂,功能比较强大。
4.1.1DTD约束
1.内部约束:约束写在xml文件中,例:
<?xml version="1.0" encoding="UTF-8" standalone = "no" ?>
<!DOCTYPE note [ <!ELEMENT note (to,from,heading,body)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDATA)>
]> //约束文件
<note>
<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>
</note>
2.外部约束
在外面写一个约束文件
4.1.2 SChema
约束文件:.xsd
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
<!--显示 schema 中用到的元素和数据类型来自命名空间 "http://www.w3.org/2001/XMLSchema"。同时它还规定了来自命名空间
"http://www.w3.org/2001/XMLSchema" 的元素和数据类型应该使用前缀 xs:-->
targetNamespace="http://www.w3school.com.cn"
xmlns="http://www.w3school.com.cn"
elementFormDefault="qualified">
<xs:element name="note">
<xs:complexType>
<xs:sequence>
<xs:element name="to" type="xs:string"/>
<xs:element name="from" type="xs:string"/>
<xs:element name="heading" type="xs:string"/>
<xs:element name="body" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
引用:
<?xml version="1.0"?>
<note
xmlns="http://www.w3school.com.cn"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.w3school.com.cn note.xsd"> //引用xsd文件
<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>
</note>
命名空间的概念:
xmlns="http://www.w3school.com.cn"定义命名空间
xmlns:a=“http://www.w3school.com.cn” 表示以a为命名空间的别名,不取就默认
5.xml的解析
解析:操作xml文档,将文档中的数据读取到内存中
解析的两种思想:
1.DOM:将标记语言一次性加载进内存,在内存中形成一棵DOM树。(一般用于服务器端)
优点:一次性加载,可以对节点进行增删改查。
缺点:消耗内存
2.SAX:逐行读取,读一行释放一行。基于事件驱动(一般用于手机端)
优点:不占内存
缺点:只能读取,无法进行增删改
6.xml解析器
1.JAXP:sun公司出品的官方解析器,不太好
2.DOM4J 优秀
3.JSoup
4.PULL:安卓操作系统内置,SAX方式
7.JSoup详解
1)JSoup类:提供从各种来源加载和解析HTML文档的方法。
1.1)static Document parse(File in, String charsetName) 将指定的xml文件解析成文档
1.2)static Document parse(String html) 解析文档
1.3)static Document parse(URL url , int timeoutMillis) 通过网络路径解析
2)Document类
3)Element类 (不做介绍 类似于JS中的内容)
8.快捷查询
1)selector 选择器。document.select(符合css规范)
2)XPath:
先要创建一个JXDocument对象https://www.w3school.com.cn/xpath/xpath_syntax.asp