PHP - xml 到 json 的转换:“字符串无法解析为 XML”

Posted

技术标签:

【中文标题】PHP - xml 到 json 的转换:“字符串无法解析为 XML”【英文标题】:PHP - xml to json conversion: "String could not be parsed as XML" 【发布时间】:2018-06-02 23:23:45 【问题描述】:

我有一个很好的 xml 文件(巨大,大约 420K 行,但有效),我只是试图以这种方式将其转换为 json:

$xml_str = file_get_contents('jobs.xml');
$xml = new SimpleXMLElement($xml_str);
$json = json_encode($xml);

当我运行我的 php 代码时,它会显示 3 个重复警告:

Warning: SimpleXMLElement::__construct(): Entity: line 1: parser error : error parsing attribute name in /retrieve.php on line 34
Warning: SimpleXMLElement::__construct(): <xml version="1.0" encoding="UTF-8" ?> in /retrieve.php on line 34
Warning: SimpleXMLElement::__construct(): ^ in /retrieve.php on line 34

请注意,第 34 行包含此指令:

$xml = new SimpleXMLElement($xml_str);

还有一个致命错误:

Fatal error: Uncaught exception 'Exception' with message 'String could not be parsed as XML' in /retrieve.php:34 Stack trace: #0 /retrieve.php(34): SimpleXMLElement->__construct('<xml version="1...') #1 main thrown in /retrieve.php on line 34

我将向您展示我的 xml 的第一行:

<xml version="1.0" encoding="UTF-8" ?>
<jobs>

   <job>
      <category>Transport / logistics / warehouse</category>
      <description>Bla bla bla </description>
      <post_date>2017-12-01</post_date>
      <salary>60000</salary>
   </job>

....
</jobs>

【问题讨论】:

【参考方案1】:

您的 XML 无效。将第一行替换为

<?xml version="1.0" encoding="UTF-8" ?>

【讨论】:

以上是关于PHP - xml 到 json 的转换:“字符串无法解析为 XML”的主要内容,如果未能解决你的问题,请参考以下文章

PHP将带有一些(重复)元素的XML转换为Json到Json数组[重复]

PHP SimpleXML 中的 XML 到 JSON 转换

XML 到 JSON 或数组? PHP

XML 到 JSON 的动态转换

带有 php 或 python 属性的 xml 到 json

在 PHP 中将 JSON 转换为 XML,但在 XML 中为 JSON 数组创建一个容器元素