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

简介: PHP快速入门与实战JSON与XML都是用于在不同的应用程序之间传输数据的格式化语言。在PHP中,可以使用内置函数处理JSON和XML格式的数据。以上就是关于本篇文章介绍的内容,JSON与XML处理,后续更多内容将收录在专栏PHP快速入门与实战。

@TOC


前言

本文已收录于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"
);

{
   
   mathJaxContainer[0]}data);
echo $jsonData;

输出结果为:

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

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

$jsonData = '{"name":"John","age":30,"city":"New York"}';
{
   
   mathJaxContainer[1]}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节点的值:

{
   
   mathJaxContainer[2]}xml->name;
{
   
   mathJaxContainer[3]}xml->age;
{
   
   mathJaxContainer[4]}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');
{
   
   mathJaxContainer[5]}myArray);
echo $json;

输出结果:

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

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

$json = '{"name":"XiaoMin","age":30,"city":"New York"}';
{
   
   mathJaxContainer[6]}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>';
{
   
   mathJaxContainer[7]}xmlString);
echo $xml->name;

输出结果:

XiaoMin

2.5 从URL获取JSON数据:

$url = 'https://api.example.com/data.json';
{
   
   mathJaxContainer[8]}url);
{
   
   mathJaxContainer[9]}jsonString, true);
echo $data['name'];

输出结果:

XiaoMin

2.6 写入JSON文件:

$data = array('name' => 'XiaoMin', 'age' => 30, 'city' => 'New York');
{
   
   mathJaxContainer[10]}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');
{
   
   mathJaxContainer[11]}data);
$curl = curl_init();
curl_setopt({
   
   mathJaxContainer[12]}url);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt({
   
   mathJaxContainer[13]}jsonString);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
{
   
   mathJaxContainer[14]}curl);
{
   
   mathJaxContainer[15]}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');
{
   
   mathJaxContainer[16]}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>';
{
   
   mathJaxContainer[17]}xmlString);
{
   
   mathJaxContainer[18]}xml);
{
   
   mathJaxContainer[19]}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>';
{
   
   mathJaxContainer[20]}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';
{
   
   mathJaxContainer[21]}url);
{
   
   mathJaxContainer[22]}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>';
{
   
   mathJaxContainer[23]}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({
   
   mathJaxContainer[24]}url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
{
   
   mathJaxContainer[25]}curl);
{
   
   mathJaxContainer[26]}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>';
{
   
   mathJaxContainer[27]}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快速入门与实战中,感谢大家支持。

相关文章
|
3月前
|
JSON PHP 数据格式
|
3月前
|
XML 存储 JSON
Python学习 -- 常用数据交换格式(CSV、XML、JSON)
Python学习 -- 常用数据交换格式(CSV、XML、JSON)
31 0
|
3月前
|
XML JSON 数据格式
xml与JSON的区别
xml与JSON的区别
30 1
|
2月前
|
XML 机器学习/深度学习 JSON
在火狐浏览器调ajax获取json数据时,控制台提示“XML 解析错误:格式不佳”。
在火狐浏览器调ajax获取json数据时,控制台提示“XML 解析错误:格式不佳”。
29 0
在火狐浏览器调ajax获取json数据时,控制台提示“XML 解析错误:格式不佳”。
|
1天前
|
XML JSON 中间件
中间件数据格式JSON与XML之间的转换
中间件数据格式JSON与XML之间的转换
10 3
|
19天前
|
XML JSON JavaScript
Java中XML和JSON的比较与应用指南
本文对比了Java中XML和JSON的使用,XML以自我描述性和可扩展性著称,适合结构复杂、需验证的场景,但语法冗长。JSON结构简洁,适用于轻量级数据交换,但不支持命名空间。在Java中,处理XML可使用DOM、SAX解析器或XPath,而JSON可借助GSON、Jackson库。根据需求选择合适格式,注意安全、性能和可读性。
27 0
|
24天前
|
XML JSON JavaScript
使用JSON和XML:数据交换格式在Java Web开发中的应用
【4月更文挑战第3天】本文比较了JSON和XML在Java Web开发中的应用。JSON是一种轻量级、易读的数据交换格式,适合快速解析和节省空间,常用于API和Web服务。XML则提供更强的灵活性和数据描述能力,适合复杂数据结构。Java有Jackson和Gson等库处理JSON,JAXB和DOM/SAX处理XML。选择格式需根据应用场景和需求。
|
1月前
|
JSON JavaScript PHP
PHP把unicode编码的json字符串转中文
PHP把unicode编码的json字符串转中文
13 0
|
2月前
|
JSON JavaScript Java
【PHP】英文博客专栏PHP快速入门个人笔记
【PHP】英文博客专栏PHP快速入门个人笔记
119 1