Php 通过父属性访问值

Php 通过父属性访问值,php,xpath,simplexml,attributes,parent,Php,Xpath,Simplexml,Attributes,Parent,我希望根据传递的属性通过xpath获得值A-1 我已经从上一页通过php传递了单元的index属性,并且正在通过global GET访问它: $value = intval($_GET['index']); xml: <UNIT index='1'> <ID>A-1</ID> <MANUFACTURER>testing inc.</MANUFACTURER> </UNIT> <UNIT index

我希望根据传递的属性通过xpath获得值A-1

我已经从上一页通过php传递了单元的index属性,并且正在通过global 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>
我知道我得到了需要传递的“1”,因为我回显了要检查的$value,但是 它给了我A-2的ID,这将是xml索引号(从0开始)-而不是我的属性索引号。

您可以使用该方法查询特定的
单元,您需要使用XPath查询,如
//UNIT[@index=2]

$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";
}
使用


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

您没有使用xpath。这类似于$xml->xpath(
$path)
;编辑的可能副本:此副本:
$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";
}