前言
本文已收录于PHP全栈系列专栏:PHP快速入门与实战
一、使用介绍
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快速入门与实战中,感谢大家支持。