我需要循環訪問Ancestors
節點以獲取相應的BrowseNodeId
和Name
值。我如何使用XPath執行此操作?我想是這樣的下面,但它不工作:PHP/XPath:使用SimpleXML對XML中的祖先節點進行迭代使用SimpleXML
//BrowseNode[1]//Ancestors[1]/BrowseNode/BrowseNodeId/text()
//BrowseNode[1]//Ancestors[1]/BrowseNode/Name/text()
我認爲的XPath //Ancestors
部分實際上是搜索整個XML樹。我需要做的是訪問每個節點以獲取所需的值。我該怎麼做呢?在下面的例子中,我想要:歐洲 - >歷史 - >主題 - >書籍。
示例XML:
<BrowseNode>
<BrowseNodeId>4952</BrowseNodeId>
<Name>France</Name>
<Ancestors>
<BrowseNode>
<BrowseNodeId>4935</BrowseNodeId>
<Name>Europe</Name>
<Ancestors>
<BrowseNode>
<BrowseNodeId>9</BrowseNodeId>
<Name>History</Name>
<Ancestors>
<BrowseNode>
<BrowseNodeId>1000</BrowseNodeId>
<Name>Subjects</Name>
<IsCategoryRoot>1</IsCategoryRoot>
<Ancestors>
<BrowseNode>
<BrowseNodeId>283155</BrowseNodeId>
<Name>Books</Name>
</BrowseNode>
</Ancestors>
</BrowseNode>
</Ancestors>
</BrowseNode>
</Ancestors>
</BrowseNode>
</Ancestors>
</BrowseNode>
@Alejandro的答案比你接受的答案要好。接受的答案實際上是錯誤的,因爲根本沒有獲得任何節點:XPath表達式`/ Ancestors/BrowseNode`沒有選擇任何節點,因爲你的XML文檔沒有名爲`Ancestors`的頂層元素。請考慮接受正確的答案,因爲接受錯誤的答案可能會誤導他人。 – 2011-01-08 17:10:45