XPath是一种专门用来在xml文档中查找信息的语言,类似数据库的SQL
XPath 教程 | 菜鸟教程
下面是我在文档里没看到的(也可能是有,但我看的不够仔细)
图片内容来源 《xml原理与应用》 夏天 编著
节点类型| 结点类型 | 结点的值 | 结点的名称 | 描 述 |
|---|---|---|---|
| root | 该文档中的所有Text结点的内容按顺序合并后的结果 | 无 | 代表一个XML文档的个根。该结点在树的最顶端,可以包含根element, comment 和 processor-instruction等类型的结点 |
| element | 该元素下的所有Text结点(包含子结点的Text结点)的内容按顺序合并后的结果 | 元素的标签名,如果含有名字空间前缀,也包含在内 | 代表一个XML元素,element, text, comment 或processor-instruction等类型的结点 |
| attribute | 属性的值 | 属性名,如果含有名字空间前缀,也包含在内 | 代表一个元素的属性 |
| text | Text结点中包含的字符数据。 | 无 | 代表一个元素的文本内容 |
| comment | 注释的内容(不包含 ) | 无 | 代表一个XML注释 |
| processing-instruction | 跟在目标名之后的部分 | 目标名 | 代表一个XML处理指令 |
| namespace | 名字空间URI | 名字空间前缀名 | 代表一个XML名字空间 |
节点测试用于确定轴中的节点。分为使用名称进行测试或使用类型进行测试。
1.使用名称进行节点测试
| 名称测试 | 描述 |
|---|---|
| 结点名 | 选择所有名为 结点名 的结点。 |
| * | 选择除属性和名字空间以外的所有类型的结点。 |
示例
| 例子 | 解释 |
|---|---|
| child::brandA:product | 选择节点名为 brandA:product的所有孩子元索节点 |
| child:brandB:* | 选择节点名的限定名称为brandB的所有孩子元素节点 |
| attribute::* | 选择当前上下文节点的所有属性节点 |
| child:* | 选择当前上下文节点的所有孩子元素节点 |
2.使用类型进行节点测试
| 类型标识符 | 描述 |
|---|---|
| text() | 选择所有文本结点。如果带参数,表示选择文本值为参数值的文本结点。 |
| comment() | 选择所有注释结点。如果带参数,表示选择注释内容为参数值的注释结点 |
| processing-instruction ( ) | 选择所有processing-instruction 结点。如果带参数,表示选择目标名为参数值的processing-instruction 结点。 |
| node() | 忽略类型,选择轴上的所有节点 |
示例
| 例子 | 解释 |
|---|---|
| child::text() | 选择文本子节点 |
| /child::order/child:comment() | 选择order根元索节点的注释子节点 |
| /child::order/child:node() | 选择order根元素节点的所有子节点,不考虑类型 |
| /child::processing-instruction('xsl-stylesheet') | 选择根节点的处理指令子节点,且目标为'xsl-stylesheet' |
| 完整形式 | 缩写 | 示例 | 对应缩写示例 |
|---|---|---|---|
| child:: | 省略 | child::product | product |
| attributc:: | @ | child::product/attribute::name | product/@name |
| self:node() | . | self::node()/product | ./product |
| parent::node() | .. | parent::node()/@name | ../@name |
| /descendant-or-self::node()/ | // | /descendant-or-self::node()/product | //product |
| [position()=数字] | [数字] | child::product[position()==3] | product[3] |
以上大部分内容参考自《xml原理与应用》 夏天 编著 和一个 PPT课件 有删改



