> 文章列表 > PHP快速入门08-JSON与XML处理

PHP快速入门08-JSON与XML处理

PHP快速入门08-JSON与XML处理

文章目录

  • 前言
  • 一、使用介绍
    • 1.1 JSON处理
    • 1.2 XML处理
  • 二、常见用法20例
    • 2.1 将数组转换为JSON格式:
    • 2.2 将JSON字符串转换回PHP数组:
    • 2.3 读取XML文件:
    • 2.4 将XML字符串转换成PHP对象:
    • 2.5 从URL获取JSON数据:
    • 2.6 写入JSON文件:
    • 2.7 使用cURL发送POST请求并接收JSON响应:
    • 2.8 使用SimpleXMLElement创建XML节点
    • 2.9 使用XPath获取XML节点:
    • 2.10 将XML字符串转换为数组:
    • 2.11 修改XML节点的属性值:
    • 2.12 从URL获取XML数据:
    • 2.13 使用SimpleXMLElement删除XML节点:
    • 2.14 使用cURL发送GET请求并接收JSON响应:
    • 2.15 使用SimpleXMLElement修改XML节点的文本内容:
  • 总结

前言

本文已收录于PHP全栈系列专栏:PHP快速入门与实战
PHP快速入门08-JSON与XML处理

一、使用介绍

JSON与XML都是用于在不同的应用程序之间传输数据的格式化语言。在PHP中,可以使用内置函数处理JSON和XML格式的数据。

1.1 JSON处理

PHP提供了json_encode()和json_decode()两个函数来处理JSON格式的数据。其中,json_encode()函数将PHP数组转换为JSON格式字符串,而json_decode()函数将JSON格式字符串转换为PHP数组或对象。

例如,以下代码将一个PHP数组转换为JSON格式字符串:

$data = array("name" => "John","age" => 30,"city" => "New York"
);$jsonData = json_encode($data);
echo $jsonData;

输出结果为:

{"name":"John","age":30,"city":"New York"}

而以下代码将一个JSON格式字符串转换为PHP数组:

$jsonData = '{"name":"John","age":30,"city":"New York"}';
$data = json_decode($jsonData);echo $data->name; // 输出 John
echo $data->age; // 输出 30
echo $data->city; // 输出 New York

1.2 XML处理

PHP提供了SimpleXML扩展来处理XML格式的数据。SimpleXML允许将XML文档转换为一个对象,这使得操作XML文档变得简单。

例如,以下代码将一个XML文档解析为一个SimpleXMLElement对象:

$xml = simplexml_load_file("example.xml");
print_r($xml);

其中example.xml文件内容如下:

<person><name>John</name><age>30</age><city>New York</city>
</person>

输出结果为:

SimpleXMLElement Object
([name] => John[age] => 30[city] => New York
)

使用SimpleXML扩展,可以通过以下方式获取XML节点的值:

$name = $xml->name;
$age = $xml->age;
$city = $xml->city;echo $name; // 输出 John
echo $age; // 输出 30
echo $city; // 输出 New York

二、常见用法20例

2.1 将数组转换为JSON格式:

$myArray = array('name' => 'XiaoMin', 'age' => 30, 'city' => 'New York');
$json = json_encode($myArray);
echo $json;

输出结果:

{"name":"XiaoMin","age":30,"city":"New York"}

2.2 将JSON字符串转换回PHP数组:

$json = '{"name":"XiaoMin","age":30,"city":"New York"}';
$myArray = json_decode($json, true);
echo $myArray['name'];

输出结果:

XiaoMin

2.3 读取XML文件:

$xml = simplexml_load_file('data.xml');
echo $xml->user[0]->name;

输出结果:

XiaoMin

2.4 将XML字符串转换成PHP对象:

$xmlString = '<root><name>XiaoMin</name><age>30</age><city>New York</city></root>';
$xml = simplexml_load_string($xmlString);
echo $xml->name;

输出结果:

XiaoMin

2.5 从URL获取JSON数据:

$url = 'https://api.example.com/data.json';
$jsonString = file_get_contents($url);
$data = json_decode($jsonString, true);
echo $data['name'];

输出结果:

XiaoMin

2.6 写入JSON文件:

$data = array('name' => 'XiaoMin', 'age' => 30, 'city' => 'New York');
$jsonString = json_encode($data);
file_put_contents('data.json', $jsonString);

2.7 使用cURL发送POST请求并接收JSON响应:

$url = 'https://api.example.com/data';
$data = array('name' => 'XiaoMin', 'age' => 30, 'city' => 'New York');
$jsonString = json_encode($data);
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $jsonString);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($curl);
$data = json_decode($response, true);
echo $data['status'];
curl_close($curl);

2.8 使用SimpleXMLElement创建XML节点:

$xml = new SimpleXMLElement('<root></root>');
$xml->addChild('name', 'XiaoMin');
$xml->addChild('age', 30);
$xml->addChild('city', 'New York');
echo $xml->asXML();

输出结果:

<root><name>XiaoMin</name><age>30</age><city>New York</city>
</root>

2.9 使用XPath获取XML节点:

$xml = simplexml_load_file('data.xml');
$name = $xml->xpath('/users/user[1]/name');
echo $name[0];

输出结果:

XiaoMin

2.10 将XML字符串转换为数组:

$xmlString = '<root><name>XiaoMin</name><age>30</age><city>New York</city></root>';
$xml = simplexml_load_string($xmlString);
$jsonString = json_encode($xml);
$data = json_decode($jsonString, true);
echo $data['name'];

输出结果:

XiaoMin

2.11 修改XML节点的属性值:

$xmlString = '<root><user id="1"><name>XiaoMin</name><age>30</age><city>New York</city></user></root>';
$xml = simplexml_load_string($xmlString);
$xml->user['id'] = 2;
echo $xml->asXML();

输出结果:

<root><user id="2"><name>XiaoMin</name><age>30</age><city>New York</city></user>
</root>

2.12 从URL获取XML数据:

$url = 'https://api.example.com/data.xml';
$xmlString = file_get_contents($url);
$xml = simplexml_load_string($xmlString);
echo $xml->user[0]->name;

输出结果:

XiaoMin

2.13 使用SimpleXMLElement删除XML节点:

$xmlString = '<root><user id="1"><name>XiaoMin</name><age>30</age><city>New York</city></user></root>';
$xml = new SimpleXMLElement($xmlString);
unset($xml->user[0]);
echo $xml->asXML();

输出结果:

<root/>

2.14 使用cURL发送GET请求并接收JSON响应:

$url = 'https://api.example.com/data?name=XiaoMin&age=30';
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($curl);
$data = json_decode($response, true);
echo $data['city'];
curl_close($curl);

2.15 使用SimpleXMLElement修改XML节点的文本内容:

$xmlString = '<root><user id="1"><name>XiaoMin</name><age>30</age><city>New York</city></user></root>';
$xml = simplexml_load_string($xmlString);
$xml->user[0]->name = 'Jane';
echo $xml->asXML();

输出结果:

<root><user id="1"><name>Jane</name><age>30</age><city>New York</city></user>
</root>

总结

以上就是关于本篇文章介绍的内容,JSON与XML处理,后续更多内容将收录在专栏PHP快速入门与实战中,感谢大家支持。