PHP - 通过搜索另一个属性标识符来获取XML元素属性的值

时间:2015-09-21 16:15:05

标签: php xml

我试图通过php从xml字符串中获取一些信息。

以下是示例:

NetworkClassLoader

我如何才能获得名称'当我知道' id'字符串?

1 个答案:

答案 0 :(得分:2)

实现此目的的一种方法是将XML解析为数组结构。然后用简单的for循环查看数组值:

$simple = '<test>
 <item id="29489" name="Strawberry" str="nd93n1jn"/>
 <item id="24524" name="Apple" str="df89ah3n"/>
 <item id="84452" name="Banana" str="27g3vhvr"/>
 <item id="01834" name="Kiwi" str="h32h8329"/>
 <item id="27483" name="Coconut" str="98hf3ubf"/>
 <item id="34892" name="IDK" str="2hbf34wk"/>
</test>';

 $p = xml_parser_create();
xml_parse_into_struct($p, $simple, $outArray, $index);
xml_parser_free($p);

$needle="84452";

for($i=0;$i<count($outArray);$i++){ 
    if (array_key_exists('attributes', $outArray[$i])) {
            if($outArray[$i]['attributes']['ID']==$needle){ 
                echo "found it, its name is: " . $outArray[$i]['attributes']['NAME'];
            } 
    } 
}

请注意,当您使用xml_parse_into_struct函数时,XML的属性存储在一个名为相同方式(属性)的子数组中。 另请注意,使用xml_parse_into_struct创建的数组键默认情况下会转换为UPPERCASE(在搜索中我使用大写字母)。如果大小写很重要,则需要在调用xml_parse_into_struct

之前添加此选项
xml_parser_set_option($p,XML_OPTION_CASE_FOLDING,0);