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

Php 从不同元素获取属性值(simpleXML),php,xml,simplexml,Php,Xml,Simplexml,我想知道是否有一种通过使用SimpleXML从不同元素获取XML属性值的方法 考虑到以下XML: <element1> <sub-element1 color="red">Content</sub-element1> </element1> <element2> <sub-element2 color="blue">Content</sub-element> </element2>

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

考虑到以下XML:

<element1>
    <sub-element1 color="red">Content</sub-element1>
</element1>
<element2>
    <sub-element2 color="blue">Content</sub-element>
</element2>
请注意,颜色属性可能存在于30多个不同的元素中,因此我不想逐个元素选择属性元素

谢谢你的帮助


Damien

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

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

:


这不是正确的XML,正确的XML会将element1和element2作为父元素中的子元素。一个XML文档只能有一个根。当然有一个根元素main-element。您是否有一些代码向我们展示您一直在尝试的内容?而滥用@skrilled也无济于事。你给我们看的片段就是,一个片段。
//*/@color
$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