我正在使用 Java 自学来自Pro XML Development 的XPath 。只是为了练习,我构建了一个示例 XML 文档和一些 XPath 表达式。
下面是一些 XPath 表达式及其解释和一些相关问题。如果我的解释有误,请纠正我,并在适用的情况下回答问题。
XML
<?xml version="1.0" encoding="UTF-8" ?>
<people>
<student scholarship="Yes">
<name>John</name>
<course>Computer Technology</course>
<semester>6</semester>
<scheme>E</scheme>
</student>
<student>
<name>Foo</name>
<course>Industrial Electronics</course>
<semester>6</semester>
<scheme>E</scheme>
</student>
<grumpy-cat>
<soup-noodle>
<student>
<name>Dingle</name>
<course>Grumpiness</course>
<semester>3</semester>
<scheme>E</scheme>
</student>
</soup-noodle>
</grumpy-cat>
</people>
表达式 1: /people/student[@scholarship='Yes']/name
解释:将选择<name>..</name>
包含在其中的元素,<people>
该元素具有名为值<student>
的属性问题:这是否也会选择其中的值 John ???? scholarship
Yes
表达式2: /people/student[2]
解释:将选择元素<student>..</student>
中位于第二位置的元素<people>
问题:它是否还会选择其中的子节点?
表达式3: /people/student/@scholarship
说明:将在元素student中选择属性奖学金。如果有多个<student scholarship="">
,那么它将选择多个属性
表达式 4: //name[ancestor::student]
解释:将选择所有<name>..</name>
元素
//
意味着“所有的后代”。在我的上下文中,这意味着“只要我的直系祖先是学生,我不在乎后代是谁”