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

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

前言

本文已收录于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快速入门与实战中,感谢大家支持。

相关文章
|
1月前
|
JSON 缓存 前端开发
PHP如何高效地处理JSON数据:从编码到解码
在现代Web开发中,JSON已成为数据交换的标准格式。本文探讨了PHP如何高效处理JSON数据,包括编码和解码的过程。通过简化数据结构、使用优化选项、缓存机制及合理设置解码参数等方法,可以显著提升JSON处理的性能,确保系统快速稳定运行。
|
7月前
|
XML JSON 前端开发
基于若依的ruoyi-nbcio流程管理系统仿钉钉流程json转bpmn的flowable的xml格式(简单支持发起人与审批人的流程)
基于若依的ruoyi-nbcio流程管理系统仿钉钉流程json转bpmn的flowable的xml格式(简单支持发起人与审批人的流程)
448 2
基于若依的ruoyi-nbcio流程管理系统仿钉钉流程json转bpmn的flowable的xml格式(简单支持发起人与审批人的流程)
|
7月前
|
XML JSON 前端开发
基于若依的ruoyi-nbcio流程管理系统仿钉钉流程json转bpmn的flowable的xml格式(支持并行网关)
基于若依的ruoyi-nbcio流程管理系统仿钉钉流程json转bpmn的flowable的xml格式(支持并行网关)
373 3
|
2月前
|
XML JSON 前端开发
C#使用HttpClient四种请求数据格式:json、表单数据、文件上传、xml格式
C#使用HttpClient四种请求数据格式:json、表单数据、文件上传、xml格式
527 0
|
4月前
|
XML JSON Java
使用IDEA+Maven搭建整合一个Struts2+Spring4+Hibernate4项目,混合使用传统Xml与@注解,返回JSP视图或JSON数据,快来给你的SSH老项目翻新一下吧
本文介绍了如何使用IntelliJ IDEA和Maven搭建一个整合了Struts2、Spring4、Hibernate4的J2EE项目,并配置了项目目录结构、web.xml、welcome.jsp以及多个JSP页面,用于刷新和学习传统的SSH框架。
115 0
使用IDEA+Maven搭建整合一个Struts2+Spring4+Hibernate4项目,混合使用传统Xml与@注解,返回JSP视图或JSON数据,快来给你的SSH老项目翻新一下吧
|
4月前
|
JSON 前端开发 JavaScript
php中JSON或数组到formData的键值对转换
转换JSON或数组到formData格式的键值对并不复杂。PHP的 `json_decode()`与 `http_build_query()`是实现这一转换过程的关键函数。理解这个转换过程对于开发中处理各种AJAX请求时调整数据格式至关重要。这样,无论是处理来自客户端的JSON字符串,还是服务器端的数组数据,都能够灵活地转换为适合网络传输的格式,确保数据交换的顺畅和高效。
101 4
|
4月前
|
Java Spring 容器
彻底改变你的编程人生!揭秘 Spring 框架依赖注入的神奇魔力,让你的代码瞬间焕然一新!
【8月更文挑战第31天】本文介绍 Spring 框架中的依赖注入(DI),一种降低代码耦合度的设计模式。通过 Spring 的 DI 容器,开发者可专注业务逻辑而非依赖管理。文中详细解释了 DI 的基本概念及其实现方式,如构造器注入、字段注入与 setter 方法注入,并提供示例说明如何在实际项目中应用这些技术。通过 Spring 的 @Configuration 和 @Bean 注解,可轻松定义与管理应用中的组件及其依赖关系,实现更简洁、易维护的代码结构。
62 0
|
6月前
|
JSON PHP 数据格式
蓝易云 - PHP用CURL发送Content-type为application/json的POST请求方法
在这段代码中,我们首先创建了一个包含我们要发送的数据的数组,并使用 `json_encode`函数将其转换为JSON格式。然后,我们初始化了一个cURL会话,并设置了一些选项,包括POST请求方法、要发送的数据、返回结果和HTTP头部信息。最后,我们执行了cURL请求并关闭了会话。
168 2
|
7月前
|
XML JSON 前端开发
基于若依的ruoyi-nbcio流程管理系统仿钉钉流程json转bpmn的flowable的xml格式(排它条件网关)
基于若依的ruoyi-nbcio流程管理系统仿钉钉流程json转bpmn的flowable的xml格式(排它条件网关)
125 3
基于若依的ruoyi-nbcio流程管理系统仿钉钉流程json转bpmn的flowable的xml格式(排它条件网关)
|
5月前
|
XML JSON 缓存
优化Java中XML和JSON序列化
优化Java中XML和JSON序列化
下一篇
DataWorks