从不同的元素(simpleXML)获取属性值


Get attribute value from different elements (simpleXML)

我想知道是否有一种方法可以通过使用SimpleXML从不同的元素获得XML属性值?

考虑以下XML:

<element1>
    <sub-element1 color="red">Content</sub-element1>
</element1>
<element2>
    <sub-element2 color="blue">Content</sub-element>
</element2>

我想解析这个xml得到:

red
blue

请注意,"color"属性可能存在于30多个不同的元素中,所以我不想逐个元素地选择该属性。

谢谢你的帮助!

戴米恩

您可以使用以下XPath表达式来获取XML文档中任何元素的color属性:

//*/@color

注意,您可以使用*来引用XPath中任何名称的元素,并使用@*来引用任何名称属性。

eval.in demo :

$string = <<<XML
<root>
    <element1>
        <sub-element1 color="red">Content</sub-element1>
    </element1>
    <element2>
        <sub-element2 color="blue">Content</sub-element2>
    </element2>
</root>
XML;
$xml = new SimpleXMLElement($string);
$colors = $xml->xpath("//*/@color");
foreach($colors as $color){
    echo $color ."'r'n";
}
输出:

red
blue