XML可以呈现复杂的树状结构
<?xml version= "1.0" encoding= "utf-8" ?>
<datasource id= "db oracle">
这是是标签,datasource称为标签名,从标签开始直到结束标签,称为元素,id称为属性,属性之间空格隔开,属性值需要在双引号或单引号中,单双引号类似Python一样可以替换,属性只应该在起始标签中。
</datasource>
XML大小写敏感
标签必须成对出现,有起始有终止
必须有根元素,且只能有一个根元素!
XML要求必须元素必须正确嵌套
实体引用:
实体引用 | 字符 | 说明 |
---|---|---|
< | < | 小于 |
> | > | 大于 |
& | & | 与 |
&apos | ' | 单引号 |
" | " | 双引号 |
CDATA段
<![CDATA [文本内容]]>
类似于多行文本注释
文本中有大量XML关键字时,使用CDATA段,使之当做一个文本。
\可以当做单行注释
XML解析方式
SAX解析方式:速度快,一边读一边解析,不能修改
DOM解析方式:解析所有元素成一个个Node对象,速度慢,可遍历可修改
SAXReader读取XML文档
Element element(String name)
获取当前元素下指定名字的子元素
List elements()获取当前元素下指定名字的所有元素
Attribute attribute(int index)
Attribute attribute(String index)
Document document = reader.read(xmlFile)
Element root = document.getRootElement()
List<Element> elements = root.elements()
String name = nameElement.getText()
element.elementText("salary")
解析XML步骤
- 1:创建SAXReader
- 2:创建File对象描述文件
- 3:使用SAXReader读取文件(解析过程),并返回Document对象,其封装了整棵树
- 4:通过Document获取根元素(根标签)
- 5:根据xml的结构获取不同节点以及对应信息
Xpath路径表达式:
斜杠/表示路径的分隔符
绝对路径必须以/起始
相对路径不以/起始,但是不建议使用
.表示当前节点
..表示父节点
/表示选择根节点
//表示任意位置的某个节点
@表示选择某个属性
[@*]这里*表示模糊匹配