[英]xpath get Parent of Node
我有以下XML(來自HP iLO)
<GET_EMBEDDED_HEALTH_DATA>
<FIRMWARE_INFORMATION>
<INDEX_1>
<FIRMWARE_NAME VALUE = "HP ProLiant System ROM"/>
<FIRMWARE_VERSION VALUE = "12/14/2012"/>
</INDEX_1>
<INDEX_2>
<FIRMWARE_NAME VALUE = "HP ProLiant System ROM - Backup"/>
<FIRMWARE_VERSION VALUE = "12/14/2012"/>
</INDEX_2>
<INDEX_3>
<FIRMWARE_NAME VALUE = "HP ProLiant System ROM Bootblock"/>
<FIRMWARE_VERSION VALUE = "03/11/2012"/>
</INDEX_3>
<INDEX_4>
<FIRMWARE_NAME VALUE = "iLO"/>
<FIRMWARE_VERSION VALUE = "1.13 Nov 08 2012"/>
</INDEX_4>
<INDEX_5>
<FIRMWARE_NAME VALUE = "Power Management Controller Firmware"/>
<FIRMWARE_VERSION VALUE = "3.1"/>
</INDEX_5>
</FIRMWARE_INFORMATION>
</GET_EMBEDDED_HEALTH_DATA>
我正在使用PHP SimpleXML Xpath,並且我想找出iLO版本並選擇父級,但是父級位於一個未知節點中(因為它可能位於INDEX節點中。
我設法做到了這一點:
$ilover = $xml->FIRMWARE_INFORMATION->xpath("//FIRMWARE_NAME[@VALUE='iLO']");
這將返回包含iLO版本的節點,但我還需要包含FIRMWARE_VERSION的節點,該節點位於所選節點旁邊。
是否有可能獲得:1.如上搜索我的節點,但選擇父節點2.如上搜索我的節點,然后從當前節點旁邊的其他節點返回數據
提前謝謝了。
您可以使用以下XPath獲取FIRMWARE_NAME
父元素,其中VALUE
屬性等於'iLO':
$ilover = $xml->FIRMWARE_INFORMATION->xpath("*[FIRMWARE_NAME/@VALUE='iLO']");
或返回FIRMWARE_VERSION
而不是父元素:
//*[FIRMWARE_NAME/@VALUE='iLO']/FIRMWARE_VERSION
請嘗試以下操作:
$ilover = $xml->FIRMWARE_INFORMATION->xpath("//FIRMWARE_NAME[@VALUE='iLO']")[0]->xpath('parent::*');
它將獲得您的父節點,然后您將獲得兩個子節點,例如:
var_dump($ilover[0]->FIRMWARE_NAME);
var_dump($ilover[0]->FIRMWARE_VERSION);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.