我需要在PHP中查詢XML字符串我知道我正在尋找的節點的名稱,但我可能不一定知道節點。使用PHP simpleXML來找到一個節點我知道它的名字,但不知道它駐留在哪裏
我想我可以用xpath做到這一點,但我無法弄清楚如何設置一個相對路徑來查看文檔中的任何地方,有人能指引我朝着正確的方向。
我目前正試圖用simpleXML實現這個目標,但如果有更好的方法做到這一點,我很樂意聽到它。
我需要在PHP中查詢XML字符串我知道我正在尋找的節點的名稱,但我可能不一定知道節點。使用PHP simpleXML來找到一個節點我知道它的名字,但不知道它駐留在哪裏
我想我可以用xpath做到這一點,但我無法弄清楚如何設置一個相對路徑來查看文檔中的任何地方,有人能指引我朝着正確的方向。
我目前正試圖用simpleXML實現這個目標,但如果有更好的方法做到這一點,我很樂意聽到它。
不要使用正則表達式來解析XML!
在xpath中的後代(雙斜線)運算符將搜索所有後代以進行匹配。
$matches = $simplexmlelementobject->xpath('//nameOfElement');
以上等同於DOM方法getElementsByTagName
如果你有其中的元素的生活,你可以使用後代運營商總體思路尋找低於某一節點:
$matches = $simplexmlelementobject->xpath('someparentelement[@conditionalattr=something]//nameOfDescendantElementYouWant');
如果您需要使用DOMDocument
而不是SimpleXML
,則可以根據需要使用DOMXPath
對象發出xpath指令。 (作爲讀者的練習)
雖然我認爲使用simplexml的xpath非常簡單有效,但如果您有更多的工作要做,您可能會發現其中一些更爲熟悉的替代方案,因爲它們使用dom或css選擇器而不是xpath。
http://code.google.com/p/phpquery/
http://www.php.net/manual/en/domelement.getelementsbytagname.php
這有效。另請參閱SimpleXMLElement :: registerXPathNamespace,如果xml元素名稱是命名空間的,例如 –
goat