【问题标题】:how to get JSON from XML string如何从 XML 字符串中获取 JSON
【发布时间】:2014-12-24 07:55:39
【问题描述】:

这是我的 XML 字符串:

<root>EXTRA
  <elem id="123" at="abc">HelloText</elem>
</root>

如何将其转换为 JSON 格式(带有属性和 HelloText)?

【问题讨论】:

标签: php json


【解决方案1】:

因为 RJS 不想检查我给他建议的答案,这里是来自this post

一个常见的陷阱是忘记 json_encode() 不尊重具有文本值和属性的元素。它将选择其中之一,即数据丢失。下面的函数解决了这个问题。如果决定采用 json_encode/decode 方式,建议使用以下函数。

function json_prepare_xml( $domNode ){
  foreach( $domNode->childNodes as $node)
    if($node->hasChildNodes()) json_prepare_xml($node);
  if( $domNode->hasAttributes() && strlen($domNode->nodeValue) ){
    $domNode->setAttribute("nodeValue", $node->textContent );
    $node->nodeValue = "";
  }
  return $node;
}

$dom->loadXML( file_get_contents($xmlfile) );
json_prepare_xml($dom);
$sxml = simplexml_load_string( $dom->saveXML() );
$json = json_decode( json_encode( $sxml ) ) );

这样做,&lt;foo bar="3"&gt;Lorem&lt;/foo&gt; 将不会在您的 JSON 中以 {"foo":"Lorem"} 结尾。

【讨论】:

    猜你喜欢
    • 2017-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-25
    • 1970-01-01
    • 1970-01-01
    • 2011-07-30
    相关资源
    最近更新 更多