【问题标题】:PHP - Parsing XML object created by simplexml_load_string()PHP - 解析由 simplexml_load_string() 创建的 XML 对象
【发布时间】:2011-04-16 03:07:07
【问题描述】:

我正在尝试读取输入到 PHP 中的 simplexml_load_string() 方法中的 XML 根节点的属性值。

这是一个例子,

<data status="Active">
 <user> <userid> 1 </userid> </user>
 <user> <userid> 2 </userid> </user>
<data>

我正在尝试读取上述 XML 字符串中“状态”的值:

echo $xml->user[0]->userid;
echo $xml->attributes()->status

语句也不起作用,var_dump() 输出“NULL”。

【问题讨论】:

    标签: php xml parsing simplexml


    【解决方案1】:

    echo (string)$userNode-&gt;attributes()-&gt;status 应该可以工作

    【讨论】:

    • echo 是否需要显式转换,还是仅仅是“好风格”?
    • @Tomalak - 在我搞砸的 simplexml 实现中,我必须明确地这样做,否则它会尝试回显对象引用。也许在较新的实现中您不必这样做,因为 toString 方法会自动执行它?
    【解决方案2】:
    $xml = simplexml_load_string('<user status="Active"></user>');
    
    echo $xml->attributes()->status;
    

    【讨论】:

      【解决方案3】:

      除了attributes() 方法之外,您还可以通过将元素对象视为数组来简单地访问元素的属性(SimpleXMLElement 实现ArrayAccess

      $xml = simplexml_load_string('<user status="Active"></user>');
      echo 'status=', $xml['status'];
      

      但是要访问其他命名空间中的属性,您必须使用 attributes() (afaik)。

      【讨论】:

        【解决方案4】:

        感谢您的回复... 解析并不是真正的问题。

        我错过了以下 cURL 参数,

        curl_setopt ($curl, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt ($curl, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1");
        

        我将布尔值(cURL 响应)视为 XML 文件:)

        谢谢大家...

        【讨论】:

          【解决方案5】:

          抱歉,在您的示例 XML 中,您没有关闭结束 &lt;data&gt; 标记。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2019-12-05
            • 1970-01-01
            • 1970-01-01
            • 2014-11-06
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多