使用xml php中的属性获取值

Posted

技术标签:

【中文标题】使用xml php中的属性获取值【英文标题】:Getting value using attribute in xml php 【发布时间】:2022-01-13 05:42:52 【问题描述】:

我正在尝试从下面的代码中获取 result 属性的值,即 1

$file  = file_get_contents('https://test.com/...'); 
$xml = simplexml_load_string($file)

var_dump($xml); 

给出以下对象

object(SimpleXMLElement)#1 (1) 
[0]=> string(141) "
    <response result="1"> 
       <message>Yes here</message>
    </response>"
 

我怎样才能得到属性result = '1'的值。

print_r($xml->response['result'];  //gives NULL

【问题讨论】:

这听起来可能有点愚蠢,但是,为什么不将 [0] 字符串作为一个整体返回,然后 preg_match 双引号 ("") 并返回其中的值?我知道它不是理想的,但它有效。 你可以使用类似this @berend;转换为数组是首选$xml = (array)simplexml_load_string($file);,而不是json_decode(json_encode()) 您需要提供原始 XML,从 var_dump() 看起来它是一个 XML 文档,另一个 XML 文档位于文本节点中。如果是这种情况,您将必须读取文本值并将其解析/加载为 XML。 【参考方案1】:

您需要在指定标签名称后使用attributes 方法来获取该标签的所有属性。然后你可以通过指定属性名来获取你想要的属性的值。

$xml->response->attributes()['result']

【讨论】:

【参考方案2】:

使用attributes 方法:

$file  = <<<XML
<response result="1">
    <message>Yes here</message>
</response>
XML;
$xml = simplexml_load_string($file);

echo $xml->attributes()[0]; # returns '1'

如果只有一个属性,可以删除[0]。如果有多个,请使用[k] 作为第 (k+1) 个属性。

【讨论】:

以上是关于使用xml php中的属性获取值的主要内容,如果未能解决你的问题,请参考以下文章

获取由 XML 中的属性值选择的文本值

如何使用 PHP 删除所有 xml 属性值?

如何使用php在xpath中使用变量作为属性值?

在值中搜索字符串并在 VB.NET 中的 LINQ to XML 中获取属性值

通过php中的属性值获取HTML元素

从nifi中的xml中提取属性