三、XML查询

三、XML查询

图示

xpath是在XML树状结构中寻找节点、查询信息的语言。

1. 列出全部记录

$doc=$xml->xpath("/root/record");

列全部根节点root下的所有record节点的信息。

2. 查找最后一条记录

$doc=$xml->xpath("/root/record[last()]");

实现的功能是在$xml对象中查找最后一条record记录赋值给$doc对象。

3. 查找出倒数第二条record记录

$doc=$xml->xpath("/root/record[last()-1]");

4. 查找出第一条record记录

$doc=$xml->xpath("/root/record[1]");

5. 列出record记录中属性id是某个值的记录

$doc=$xml->xpath("/root/record[@id=2]");

XML中的局部是这样的:

图示

以上语句是列出属性id=2的记录。@id代表在属性里查询。

6. 列出record记录中节点值id是某个值的记录

$doc=$xml->xpath("/root/record[id=2]");

如果去掉@,则是在record节点中查询子节点id的值是2的节点。

XML中的局部是这样的:(https://www.daowen.com)

图示

7.列出record记录中的某个节点中值为某个字符串的记录

$doc=$xml->xpath("/root/record[username='小明']");

这里列出的是record记录中,子节点username节点值等于字符串“小明”的节点。

8. 列出record记录中的某个节点以某字打头的所有记录

$doc=$xml->xpath("/root/record[starts-with(username,'李')]");

这里列出的是record记录中,子节点username的值里以“李”字打头的记录。

9.列出record记录的某个节点中包含有某个字符的记录

$doc=$xml->xpath("/root/record[contains(username,'李')]");

列出record记录中,子节点username的值里包含“李”字的记录。

10. 列出同时满足两个条件的记录

$doc=$xml->xpath("/root/record[contains(username,'李') and contains(address,'海淀')]");

列出record记录中,子节点username的值中包含“李”且子节点address的值中包含“海淀”的记录。

11.列出前两条记录

$doc=$xml->xpath("/root/record[position()<3]");

列出前两条record记录。

12.使用xpath的完整程序范例(read_xpath.php)

以下程序是用xpath查询后显示列表的完整程序,可以用以上各种查询语句替换程序中的xpath那句话,实现各种查询功能。如图7-6所示。

图示

图示

图7-6 使用xpath查询XML程序显示结果