如何在使用simplexml_load_string()将XML转换为JSON时删除“@attributes”?

3
我需要的是:

输入图片描述

但我得到的是:

输入图片描述

如何从结果中删除"@attributes"。

你想把一个XML字符串转换成JSON对象吗?如果是的话,可以试试这个方法:$xml = simplexml_load_string($string); $json = json_encode($xml); - thomasbabuj
我已经转换了它,但结果不是我需要的。 - Nathan Tsui
你能分享一下你想要转换的 XML 字符串吗? - thomasbabuj
我也有这个问题 :( - Farshadi
2个回答

1
以下代码对我有效:

// Cleans up ugly JSON data by removing @attributes tag
function cleanup_json ($ugly_json) {
   if (is_object($ugly_json)) {
      $nice_json = new stdClass();
      foreach ($ugly_json as $attr => $value) {
         if ($attr == '@attributes') {
            foreach ($value as $xattr => $xvalue) {
              $nice_json->$xattr = $xvalue;
            }
         } else {
            $nice_json->$attr = cleanup_json($value);
         }
      }
      return $nice_json;
   } else if (is_array($ugly_json)) {
      $nice_json = array();
      foreach ($ugly_json as $n => $e) {
        $nice_json[$n] = cleanup_json($e);
      }
      return $nice_json;
   } else {
      return $ugly_json;
   }
}

// Convert XML to JSON
function convert_to_json ($xml_string) {
   $xml = simplexml_load_string($xml_string);
   $ugly_json = json_decode(json_encode($xml));
   $nice_json = cleanup_json($ugly_json);
   return json_encode($nice_json, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES);
}

-1

试试这个。也许对你有用。

$xml = simplexml_load_string($string); 
$json = json_encode($xml, true);

谢谢您的回答,但我得到了相同的结果。"@attribute"仍然存在。 - Nathan Tsui

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接