我想知道是否有一种方法可以通过使用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