【问题标题】:simplexml_load_string doesn't accept single XML tagssimplexml_load_string 不接受单个 XML 标记
【发布时间】:2020-01-21 12:50:49
【问题描述】:

PHPsimplexml_load_string() 函数有问题。我正在使用作为响应返回 XML 字符串的外部 API,如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<audience>
  <member>
    <first_name>Adam</first_name>
    <last_name/>
    <lists>
      <list>hihi</list>
    </lists>
  </member>
</audience>

当我使用simplexml_load_string($xmlString) 时,我收到false 而不是对象。 simplexml_load_string() 函数接受单个标签有什么方法吗?在这种情况下,我想将 last_name 作为空节点。

【问题讨论】:

  • 这是&lt;/list&gt; 中缺少的&lt;3v4l.org/ZEbMn
  • 是的,事实并非如此。我删除太多,无法在此处发布。我的错。
  • 现在您已将 XML 编辑为有效,但并不清楚您遇到了什么问题。将其“作为空节点”是什么意思?如果它没有任何内容或属性,你究竟想得到什么?
  • 我想使用@ThW之类的东西,但我想使用具有相同XML的变量而不是普通的XML字符串
  • 你从字符串中得到一个 xml 对象 $xmlObject = simplexml_load_string($xmlString);

标签: php xml


【解决方案1】:

下面的代码工作得很好。最后一行显示object(SimpleXMLElement)#4 (0) { }。见this 3v4l

<?php

libxml_use_internal_errors(TRUE);

$xml = <<<EOT
<?xml version="1.0" encoding="UTF-8"?>
<audience>
  <member>
    <first_name>Adam</first_name>
    <last_name/>
    <lists>
      <list>hihi</list>
    </lists>
  </member>
</audience>
EOT;

if (($o = simplexml_load_string($xml)) === FALSE)
{
        foreach (libxml_get_errors() as $error)
                echo "{$error->message}<br>\n";

        exit;
}
var_dump($o->member->last_name);

【讨论】:

    猜你喜欢
    • 2011-06-25
    • 2016-03-08
    • 2011-08-02
    • 2019-12-05
    • 1970-01-01
    • 1970-01-01
    • 2015-12-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多