【问题标题】:simplexml_load_string returns blank node [duplicate]simplexml_load_string 返回空白节点 [重复]
【发布时间】:2012-12-25 16:17:23
【问题描述】:

可能重复:
PHP get values from SimpleXMLElement array

我正在使用simplexml_load_string() 来解析 xml 字符串。它正确读取输入,但不返回任何数据,只返回空白节点。

我的xml数据是:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<leads>
    <auth>
        <username>user</username>
        <password>user</password>
    </auth>
</leads>

而功能是:

$xmlObj = simplexml_load_string($xml);

    if ($xmlObj) {
        echo "Failed loading XML\n";
        foreach(libxml_get_errors() as $error) {
            echo "\t", $error->message;
        }
    } 
    else{
        print_r($xmlObj);
     }

当我尝试打印结果时,我得到一个空白节点,例如

<auth>
    </username>
    </password>
</auth>

【问题讨论】:

  • 如果您实际提供代码,您的问题可能会变得更加清晰,这样您就可以清楚地了解如何使用相关功能。此外,您还没有提供任何信息,您的预期输出是什么,因此您的问题很容易被误读,因为您提供的输出将是原始文档。
  • 原始 XML 字符串在哪里?我问是因为在您更新了问题之后,它可能存在问题。你能提供一些样品吗?或者您是否逐字使用该示例?因为有了这些数据,它对我有用:eval.in/5334 - 小心: 你必须以这种方式检查字符串加载是否成功,否则你会遇到问题:if (false === $xmlObj) { - 也许这就是你的问题?
  • 我将上面的 xml 示例 xml 作为 web 服务响应,我正在尝试解析此响应
  • 我只能说你所获得的数据,只要这个工作有效。您可能希望共享更多代码,因为您必须提供的信息并不清楚您的实际问题是什么。这使您的问题毫无用处,因为不清楚您要问什么。你可能想提供a hexdump of your XML string

标签: php xml simplexml


【解决方案1】:

我找到了解决办法

$username = (string) $xmlObj->auth->username;

我只是放了“(字符串)”

【讨论】:

    【解决方案2】:

    您需要使用SimpleXMLElement::asXML() methodDocs 来获取XML,否则它将返回为空的根节点的值,因此为空字符串。

    所以一切都很好,花花公子。

    此外,作为预防措施,请进行正确的返回值检查:

    $obj = simplexml_load_string($xml)
    if ($obj === FALSE) {
        throw new Exception('Failed to load XML string.');
    }
    

    我希望这对您有所帮助,并为您的问题提供一些启示。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-02-25
      • 2018-04-04
      • 2015-09-21
      • 1970-01-01
      • 2016-04-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多