将此 XML 数据转换为 JSON 格式的最简单方法 [重复]

Posted

技术标签:

【中文标题】将此 XML 数据转换为 JSON 格式的最简单方法 [重复]【英文标题】:Simplest way to transform this XML data to JSON format [duplicate] 【发布时间】:2021-09-19 04:38:23 【问题描述】:

我需要使用 php 将此 XML 转换为正确的 JSON 格式,但我尝试过的任何方法似乎都不起作用。它是 SOAP 响应的子版本。

<item><OBJID>00823006</OBJID><SHORT>PUB0007</SHORT><STEXT>Leading at The Speed of Trust</STEXT><SUTXT/><BEGDA>2015-01-01</BEGDA><ENDDA>2015-12-31</ENDDA></item><item><OBJID>00823016</OBJID><SHORT>PUB0017</SHORT><STEXT>The 5 Choices to Extraordinary Prod.</STEXT><SUTXT/><BEGDA>2015-01-01</BEGDA><ENDDA>2015-12-31</ENDDA></item><item><OBJID>00823020</OBJID><SHORT>PUB0021</SHORT><STEXT>8 Etos Kerja Profesional</STEXT><SUTXT/><BEGDA>2015-01-01</BEGDA><ENDDA>2016-12-31</ENDDA></item><item><OBJID>00823028</OBJID><SHORT>PUB0029</SHORT><STEXT>CSS from Design &amp; Implementation to f/u</STEXT><SUTXT/><BEGDA>2015-01-01</BEGDA><ENDDA>2015-12-31</ENDDA></item>

尝试使用 simplexml_load_string 和 SimpleXMLElement 以及通过 google 找到的示例,但总是以乱码、格式错误的 json 或空字符串结束。

$xml = preg_replace("/(<\/?)(\w+):([^>]*>)/", "$1$2$3", $response); 
$xml = simplexml_load_string($xml); 
$json = json_encode($xml);

这里有人可以帮忙吗?非常感谢提前

【问题讨论】:

你能显示你试过的代码吗 以下是其中之一:$xml = preg_replace("/(&lt;\/?)(\w+):([^&gt;]*&gt;)/", "$1$2$3", $response); $xml = simplexml_load_string($xml); $json = json_encode($xml); 【参考方案1】:

$xml = "
<parent>
<item>
    <OBJID>00823006</OBJID>
    <SHORT>PUB0007</SHORT>
    <STEXT>Leading at The Speed of Trust</STEXT>
    <SUTXT/>
    <BEGDA>2015-01-01</BEGDA>
    <ENDDA>2015-12-31</ENDDA>
</item>
<item>
    <OBJID>00823016</OBJID>
    <SHORT>PUB0017</SHORT>
    <STEXT>The 5 Choices to Extraordinary Prod.</STEXT>
    <SUTXT/>
    <BEGDA>2015-01-01</BEGDA>
    <ENDDA>2015-12-31</ENDDA>
</item>
<item>
    <OBJID>00823020</OBJID>
    <SHORT>PUB0021</SHORT>
    <STEXT>8 Etos Kerja Profesional</STEXT>
    <SUTXT/>
    <BEGDA>2015-01-01</BEGDA>
    <ENDDA>2016-12-31</ENDDA>
</item>
<item>
    <OBJID>00823028</OBJID>
    <SHORT>PUB0029</SHORT>
    <STEXT>CSS from Design &amp; Implementation to f/u</STEXT>
    <SUTXT/>
    <BEGDA>2015-01-01</BEGDA>
    <ENDDA>2015-12-31</ENDDA>
</item>
</parent>";

$xmlFile = simplexml_load_string($xml);
$json = json_encode($xmlFile);

echo $json;

以上似乎对我有用。问题是,您的 XML 没有单个父元素。如果你添加它,你会得到正确解码的 XML / JSON。

要添加父元素,您可以执行以下操作。

$xml = "<parent>";
$xml .= $xmlToAdd;
$xml .= "</parent>";

【讨论】:

以上是关于将此 XML 数据转换为 JSON 格式的最简单方法 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何将此嵌套的 JSON 以柱状形式转换为 Pandas 数据框

如何将此 JSON 格式转换为模型类并使用改造将响应转换为列表

将带有表格数据的 Excel 电子表格转换为 JSON 的最简单方法是啥? [关闭]

将单个xml节点作为数组转换为json

将 pcap 转换为 JSON 的最简单方法

在 Android 中将 XML 转换为 JSON 会出错