2010-06-04 133 views
0

我期望通過基於傳遞的分類的xpath獲取值A-1。通過父屬性訪問值

我已經從以前的頁面通過單元的索引屬性通過PHP和我通過全球GET訪問它:

$value = intval($_GET['index']); 

的XML:

<UNIT index='1'> 
    <ID>A-1</ID> 
    <MANUFACTURER>testing inc.</MANUFACTURER> 
</UNIT> 
<UNIT index='2'> 
    <ID>A-2</ID> 
    <MANUFACTURER>testing inc.</MANUFACTURER> 
</UNIT> 

我試圖呼應它使用:

$xml = new SimpleXMLElement('demo.xml',NULL,true); 

echo $xml->UNIT[$value]->ID; 

我知道我得到的「1」,我需要通過,因爲我echo'd $ v alue來檢查,但 它給了我A-2的ID,這將是xml索引號(從0開始) - 而不是我的屬性索引號。

+0

你不使用XPath。那就像$ xml-> xpath('$ path)'; – VolkerK 2010-06-04 12:39:07

+0

[XML與xpath和PHP:如何訪問條目的屬性的文本值]的可能重複(http://stackoverflow.com/questions/1912240/xml-with-xpath-and-php-how-to -access-the-text-value-of-an-an-entry)***編輯:這一個:[XML與xpath和PHP:如何訪問條目屬性的文本值]( http://stackoverflow.com/questions/992450/simplexml-selecting-elements-which-have-a-certain-attribute-value)*** – hakre 2013-07-01 12:56:46

回答

1

您可以使用SimpleXMLElement::xpath方法通過類似//UNIT[@index=2]的XPath查詢來查詢您想要的具體UNIT

$value = intval($_GET['index']); 
$xml = new SimpleXMLElement('demo.xml',NULL,true); 
$units = $xml->xpath("//UNIT[@index=$value]"); // xpath returns an array 
if (isset($units[0])) { 
    echo $units[0]->ID; 
} else { 
    echo "No unit with index $value"; 
} 
0

使用

//UNIT[@index=$value]/ID