仅将XML的一部分转换为JSON

时间:2016-02-24 21:10:43

标签: php json xml

我有这个XML(例子):

<rows>
    <row id="123">
        <district>123</district>
        <email>test@gmail.com</email>
        <area>V</area>
    </row>
</rows>

我从URL获取在线XML。 我正在使用以下PHP代码转换为JSON: ($ url是上面我的XML的URL的变量。)

<?php

class XmlToJson {

    public function Parse ($url) {

        $file = file_get_contents($url);
        $file = str_replace(array("\n", "\r", "\t"), '', $file);
        $file = trim(str_replace('"', "'", $file));

        $simpleXml = simplexml_load_string($file);
        $json = json_encode($simpleXml);
        return $json;
    }
}
?>

返回(示例):

{
   "rows": {
      "row": [
         {
            "@attributes": {
               "id": "4310"
            },
            "district": "123",
            "email": "teste@gmail.com",
            "area": "V"
         }
      ]
   }
}

如何在没有这些标签“rows”和“row”的情况下生成JSON?

1 个答案:

答案 0 :(得分:1)

带有单行的示例XML字符串会返回此json:

 {"row":{"@attributes":{"id":"123"},"district":"123","email":"test@gmail.com","area":"V"}}

我假设你的例子是json,<rows>标签周围还有其他标签,如

<xml>
 <rows>
<row id="123">
    <district>123</district>
    <email>test@gmail.com</email>
    <area>V</area>
</row>
</rows>
</xml>

Simple XML将您的xml字符串转换为对象。只需访问要转换为json的生成对象的特定属性。

试试这个:

 $json = json_encode($simpleXml->rows->row);