xml:可扩展标记语言
使用场景:
1.跨平台,2.异构客户端,3.作为项目数据源,
4.作为页面的数据源,5.作为框架的配置文件
xml和json:
1.都是用来传输和存储数据
2.xml是以标签形式存在的,json是纯数据
3.xml文件比json传输时要大,所以传输占用资源,速度慢
4.xml需要解析,浪费时间
xml:
<person>
<name>张三</name>
<age>19</age>
</person>
json:[{'person1':{'name':'张三', 'age':'19'}}]
xml和html:
1.xml是重在传输,html是重在显示
2.xml基本没有预定义标签,html基本都是预定义标签
3.xml在特定的场景需要约束
DTD,schema,<![CDATA[数据]]>
选取节点:XPath 使用路径表达式来选取 XML 文档中的节点戒者节点集。
/,//,点,点点,@
谓语(Predicates):谓语用来查找某个特定的节点戒者包含某个指定的值的节点,被嵌在方括号中
book[1],book[ last() ],book[ last() - 1 ],book[ position() < 3 ],
title[@lang],title[@lang="eng],
book[price>35.00],book[price>35.00]/title,
//title[ contains(@lang),"e" ]
选取未知节点:*, @*, node()
选取若干路径:|
XPath 的运算符:
| 计算两个节点集(//book | //cd返回所有拥有book和cd元素的节点)
+, -,*,div除,
=,!=,<,<=,>,>=,
or或,and与,mod余数
/school :从根节点的位置开始选取
/school/python :选取python节点
/school//class:选取所有的class节点,子孙节点 //school
. :选取当前节点
. . :选取当前节点的父节点
@:选取属性
选取每个每个班级所在的教室 /school//class/@addr,//class/@addr
选取u3d下第一个class节点:/school/u3d/class[1](从1开始)
选取u3d下最后一个class节点:/school/u3d/class[ last() ]
选取u3d下倒数第二个class节点:/school/u3d/class[ last() - 1]
前两个:/school/u3d/class[ position<3 ]
查找教室等于研发一:/school//class[ @addr="研发一 " ]
/school//class[ @addr ]
属性lang包含e字符://title[ contains(@lang,“e”) ]
* 匹配任何元素节点
@* 匹配任何属性的节点
node() 匹配任何类型的节点
//book/title | //book/price 选取book下面的title节点和price节点
//book | //price 文档中