使用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中的属性获取值的主要内容,如果未能解决你的问题,请参考以下文章