【发布时间】:2015-12-20 10:32:12
【问题描述】:
如何在不丢失单个标签元素的情况下将 xml 文档转换为 json?
我的 XML:
<myTag><singleTag internValue="bli bla blo"/></myTag>
我的 PHP:
$xml = simplexml_load_string($result);
$json = json_decode(json_encode($xml));
我的输出/结果:
myTag = Object
(
0 = Object
(
@attributes = Object
(
internValue = String(11) "bli bla blo"
)
)
)
但我缺少有关名称“singleTag”的信息。它没有出现在我的结果中,但为什么?在显示所有“myTag”名称之后。
我尝试了不同的解决方案,但问题出在 json_encode 中。信息已经在这里丢失了:
"myTag":{"0":{"@attributes":{"internValue":"bli bla blo"}}}
感谢您的帮助。
问候,
克里斯托弗2007
编辑:
这是一个更好的问题示例:
$result = '<surround>
<mainCat>
<firstTag val1="false" val2="true" val3="false" val4="false" />
<secondTag val1="false" val2="true" val3="false" val4="false" />
<myTag><singleTag internValue="bli bla blo"/></myTag>
</mainCat>
</surround>';
$xml = simplexml_load_string($result);
$json = json_decode(json_encode($xml));
解决方案:
问题在于 PHP 版本。一开始我有 Apache/2.4.10 (Win32) OpenSSL/1.0.1i PHP/5.6.3 并降级到 PHP 版本 5.6.13 一切正常.
因此,再次感谢您的所有帮助,并为这样一个微不足道的错误感到抱歉:/
【问题讨论】:
-
您给出的示例不可以用任何当前支持的 PHP 版本重现:3v4l.org/NNapP - 因此不清楚您的要求。那是哪个 PHP 版本?
-
我也有同样的问题。在 php7.0.30-0ubuntu0.16.04.1 中工作正常。但 'singleTag' 在 php5.6.4-4ubuntu6.4 中变为 0
-
同时将 xsd atom 转换为数组。找到任何解决方案吗?