将此 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 & 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("/(<\/?)(\w+):([^>]*>)/", "$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 & 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 格式转换为模型类并使用改造将响应转换为列表