対応するBrowseNodeId
とName
の値を得るには、ノードAncestors
をループする必要があります。 XPathを使用してこれを行うにはどうすればよいですか?私は、XPathの//Ancestors
一部が実際に全体のXMLツリーを探していると思うPHP/XPath:SimpleXMLを使用してXMLで祖先ノードを反復する
//BrowseNode[1]//Ancestors[1]/BrowseNode/BrowseNodeId/text()
//BrowseNode[1]//Ancestors[1]/BrowseNode/Name/text()
:私は次のようなものをしようとしているが、それは働いていません。私が必要とするのは、各ノードを訪問して必要な値を取得することです。これはどうすればいいですか?下の例では、私はしたい:ヨーロッパ - >歴史 - >科目 - >本。
例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'という名前のトップ要素がないため、ノードを選択しません。間違った答えを受け入れると、他の人が誤解を招く可能性があるので、正解を受け入れることを検討してください。 –