📜  如何使用PHP将 XML 数据转换为 JSON?(1)

📅  最后修改于: 2023-12-03 15:24:00.050000             🧑  作者: Mango

如何使用PHP将XML数据转换为JSON?

在PHP中,可以使用标准库中的SimpleXMLElement类来解析XML数据,并使用json_encode函数将其转换为JSON数据。下面我们来看一个简单的示例。

示例

我们有如下的XML数据:

<?xml version="1.0" encoding="UTF-8"?>
<people>
  <person>
    <name>John</name>
    <age>30</age>
  </person>
  <person>
    <name>Jane</name>
    <age>25</age>
  </person>
</people>

我们想把它转换为JSON格式,如下所示:

{
  "people": {
    "person": [
      {
        "name": "John",
        "age": "30"
      },
      {
        "name": "Jane",
        "age": "25"
      }
    ]
  }
}

我们可以使用如下代码将其实现:

<?php
$xml = <<<XML
<?xml version="1.0" encoding="UTF-8"?>
<people>
  <person>
    <name>John</name>
    <age>30</age>
  </person>
  <person>
    <name>Jane</name>
    <age>25</age>
  </person>
</people>
XML;

$xmlObj = new SimpleXMLElement($xml);
$json = json_encode($xmlObj);
echo $json;
?>

输出结果为:

{"person":[{"name":"John","age":"30"},{"name":"Jane","age":"25"}]}

需要注意的是,上述代码只输出了person节点下的数据,因为我们在创建SimpleXMLElement对象时只传入了<person>标签内的XML数据。如果我们想输出整个XML文件的数据,可以像下面这样修改代码:

<?php
$xml = <<<XML
<?xml version="1.0" encoding="UTF-8"?>
<people>
  <person>
    <name>John</name>
    <age>30</age>
  </person>
  <person>
    <name>Jane</name>
    <age>25</age>
  </person>
</people>
XML;

$xmlObj = new SimpleXMLElement($xml);
$json = json_encode($xmlObj, JSON_PRETTY_PRINT);  // 使用JSON_PRETTY_PRINT参数使输出的JSON数据更易读
echo $json;
?>

输出结果为:

{
    "person": [
        {
            "name": "John",
            "age": "30"
        },
        {
            "name": "Jane",
            "age": "25"
        }
    ]
}
总结

用PHP将XML数据转换为JSON格式,主要是通过SimpleXMLElement类解析XML数据,然后使用json_encode函数将其转换为JSON数据。需要注意的是,json_encode函数并不能输出格式化后的JSON数据,如果需要输出更易读的JSON,需要使用JSON_PRETTY_PRINT参数。