2010-06-04 113 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