我正在使用Xpath解析一些XML文件。我想用一個表達式來選擇一個特定的分類節點和他的父節點(Sport)?!PHP XPath - 用一條規則選擇一個特定節點及其父節點
XML文檔:livescore_full.xml
<? xml version = "1.0" encoding = "UTF-8" ?>
<LivescoreData generatedAt="2013-08-18T09:41:19 CEST" type="full">
<Sport SportId="1">
<Name language="en">Soccer</Name>
<Category CategoryId="48">
<Name language="en">Argentina</Name>
<Tournament TournamentId="68" UniqueTournamentId="155">
<Name language="en">Primera Division, Torneo Inicial</Name>
</Tournament>
</Category>
<Category CategoryId="49">
<Name language="en">Brazil</Name>
<Tournament TournamentId="69" UniqueTournamentId="156">
<Name language="en">Brazil Primera Division</Name>
</Tournament>
</Category>
</Sport>
<Sport SportId="2">
<Name language="en">Basketball</Name>
<Category CategoryId="55">
<Name language="en">Spain</Name>
<Tournament TournamentId="545" UniqueTournamentId="453">
<Name language="en">Primera Division, Torneo Inicial</Name>
</Tournament>
</Category>
<Category CategoryId="56">
<Name language="en">England</Name>
<Tournament TournamentId="654" UniqueTournamentId="5656">
<Name language="en">England</Name>
</Tournament>
</Category>
</Sport>
</LivescoreData>
$xml = simplexml_load_file("livescore_full.xml");
$data = $xml->xpath('//Category[@CategoryId="48"]');
print_r($data); // only return data for specific Category node
$數據包含有關類別節點ID = 48的數據,但沒有對這項運動的ID和體育名稱信息。
如何編寫Xpath規則以使用CategoryId屬性選擇運動和類別數據?我嘗試了一些祖先或自我的變化,但沒有成功。
隨着「/ LiveScoreData/Sport [Category [@ CategoryId = '48']]」返回空數組。使用「// Sport [Category [@IetId = '48']]」返回運動節點,並且兩個類別節點(48 i 49)都被返回,但僅需要類別48。 並感謝您的及時答覆。 – HeyHo
Xpath選擇節點,它不處理它們。一旦你有了它,你可以刪除那些你不想要的ID –