xml xpath查找
XPath 是XML的查言,和SQL的角色很似。以下面XML例,介XPath 的法。
<?xml version="1.0" encoding="ISO-8859-1"?> <catalog> <cd country="USA"> <title>Empire Burlesque</title> <artist>Bob Dylan</artist> <price>10.90</price> </cd> <cd country="UK"> <title>Hide your heart</title> <artist>Bonnie Tyler</artist> <price>9.90</price> </cd> <cd country="USA"> <title>Greatest Hits</title> <artist>Dolly Parton</artist> <price>9.90</price> </cd> </catalog>
定位
XML是,似案系料的,XPath也似案系的路命名方式。不XPath 是一模式(Pattern),可以出 XML案中,路符合某模式的所有出。例如要catalog底下的cd中所有price元素可以用:
/catalog/cd/price
如果XPath的是一斜(/)代表是路。如果是斜(//)表示文件中所有符合模式的元素都被出,即使是於中不同的也被出。以下的法出文件中所有叫做cd的元素(在中的任何都被出):
//cd
未知的元素
使用星(Wildcards,*)可以未知的元素。下面法出/catalog/cd 的所有子元素:
/catalog/cd/*
以下的法出所有catalog的子元素中,包含有price作子元素的元素。
/catalog/*/price
以下的法出有父,叫做price的所有元素。
/*/*/price
以下的法出文件中的所有元素。
//*
要注意的是,想要存取不分的元素,XPath法必以斜(//),想要存取未知元素才用星(*),星只能代表未知名的元素,不能代表未知的元素。
分支
使用中括可以分支。以下的法catalog的子元素中取出第一叫做cd的元素。XPath的定中有第0元素西。
/catalog/cd[1]
以下法catalog中的最後一cd元素:(XPathj有定 first() 函式喔,用上例的 [1]就可以取出第一元素。
/catalog/cd[last()]
以下法出含有price子元素的所有/catalog/cd元素。
/catalog/cd[price]
以下法出price元素的值等於10.90的所有/catalog/cd元素
/catalog/cd[price=10.90]
以下法出price元素的值等於10.90的所有/catalog/cd元素 的price元素
/catalog/cd[price=10.90]/price
一以上的路
使用Or算元(|)就可以一以上的路。例如:
/catalog/cd/title | catalog/cd/artist
所有title以及artist元素
//title | //artist
所有title以及artist以及price元素
//title | //artist | //price
性
在XPath中,除了元素以外,也可以性。性都是以@。例如文件中所有叫做country的性:
//@country
所有含有country性的cd元素:
//cd[@country]
以下法出含有性的所有cd元素
//cd[@*]
以下法出country性值UK的cd元素
//cd[@country='UK']