【问题标题】:Get attribute value from different elements (simpleXML)从不同元素获取属性值(simpleXML)
【发布时间】:2025-11-27 10:15:02
【问题描述】:

我想知道是否有办法通过使用 SimpleXML 从不同元素中获取 XML 属性值?

考虑以下 XML:

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

我想解析这个 xml 以获得:

red
blue

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

感谢您的帮助!

达米安

【问题讨论】:

  • 这不是正确的 XML,正确的 XML 将 element1 和 element2 作为父元素中的子元素。 XML 文档只能有一个根。
  • 当然有根元素“main-element”。
  • 您有一些代码可以向我们展示您一直在尝试的内容吗?滥用@skrilled 也无济于事。您向我们展示的片段就是这样,一个片段。

标签: php xml simplexml


【解决方案1】:

您可以使用以下 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

【讨论】:

    最近更新 更多