【问题标题】:Getting value using attribute in xml php使用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。

标签: php 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) 个属性。

    【讨论】:

      猜你喜欢
      • 2012-02-28
      • 2021-04-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-16
      • 2011-07-26
      相关资源
      最近更新 更多