php+Ajax处理xml与json格式数据的方法示例

yizhihongxing

下面是“php+Ajax处理xml与json格式数据的方法示例”的详细攻略。

一、xml数据处理

1.使用DOM进行xml数据解析

使用DOM可以很容易地解析xml数据,下面是一个简单的示例。

<?php
$xml = '<?xml version="1.0" encoding="UTF-8"?>
<bookstore>
  <book category="WEB">
    <title>Learning XML</title>
    <author>Erik T. Ray</author>
    <year>2003</year>
    <price>39.95</price>
  </book>
  <book category="JAVA">
    <title>Thinking in Java</title>
    <author>Bruce Eckel</author>
    <year>1998</year>
    <price>49.95</price>
  </book>
</bookstore>';

$dom = new DOMDocument();
$dom->loadXML($xml);
$books = $dom->getElementsByTagName('book');

foreach ($books as $book) {
    $category = $book->getAttribute('category');
    $title = $book->getElementsByTagName('title')->item(0)->nodeValue;
    $author = $book->getElementsByTagName('author')->item(0)->nodeValue;
    $year = $book->getElementsByTagName('year')->item(0)->nodeValue;
    $price = $book->getElementsByTagName('price')->item(0)->nodeValue;
    echo "$title by $author ($category, $year) - $price\n";
}
?>

2.使用SimpleXML进行xml数据解析

使用SimpleXML可以更方便地解析xml数据,下面是一个简单的示例。

<?php
$xml = '<?xml version="1.0" encoding="UTF-8"?>
<bookstore>
  <book category="WEB">
    <title>Learning XML</title>
    <author>Erik T. Ray</author>
    <year>2003</year>
    <price>39.95</price>
  </book>
  <book category="JAVA">
    <title>Thinking in Java</title>
    <author>Bruce Eckel</author>
    <year>1998</year>
    <price>49.95</price>
  </book>
</bookstore>';

$sxml = simplexml_load_string($xml);
foreach ($sxml->book as $book) {
    $category = (string)$book['category'];
    $title = (string)$book->title;
    $author = (string)$book->author;
    $year = (string)$book->year;
    $price = (string)$book->price;
    echo "$title by $author ($category, $year) - $price\n";
}
?>

二、json数据处理

使用json_decode可以将json数据解析为PHP对象或数组。

<?php
$json = '{ 
    "name": "Alice", 
    "age": 18, 
    "sex": "Female", 
    "hobbies": ["music", "movies", "reading"], 
    "friends": [
        {"name": "Bob", "age": 20, "sex": "Male"}, 
        {"name": "Cathy", "age": 19, "sex": "Female"}
    ] 
}';

$obj = json_decode($json); // 解析json为对象
$arr = json_decode($json, true); // 解析json为关联数组

echo $obj->name; // 输出 Alice
echo $arr['name']; // 输出 Alice
?>

三、使用Ajax进行xml和json数据的异步请求

使用Ajax可以在不刷新页面的情况下向服务器请求并接收xml或json数据,下面是一个示例。

1.发送xml数据请求,并将响应数据解析为HTML代码显示

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>XmlHttpRequest Demo</title>
    <script>
        function loadXMLDoc() {
            var xmlhttp;
            if (window.XMLHttpRequest) { // IE7+, Firefox, Chrome, Opera, Safari
                xmlhttp = new XMLHttpRequest();
            } else { // IE6, IE5
                xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
            }
            xmlhttp.onreadystatechange = function() {
                if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
                    var dom = xmlhttp.responseXML;
                    var books = dom.getElementsByTagName("book");
                    var html = '';
                    for (var i = 0; i < books.length; i++) {
                        var title = books[i].getElementsByTagName("title")[0].childNodes[0].nodeValue;
                        var author = books[i].getElementsByTagName("author")[0].childNodes[0].nodeValue;
                        var category = books[i].getAttribute("category");
                        var year = books[i].getElementsByTagName("year")[0].childNodes[0].nodeValue;
                        var price = books[i].getElementsByTagName("price")[0].childNodes[0].nodeValue;
                        html += '<h3>' + title + '</h3><p>' + author + ' (' + category + ', ' + year + ') - ' + price + '</p>';
                    }
                    document.getElementById("content").innerHTML = html;
                }
            }
            xmlhttp.open("GET", "books.xml", true);
            xmlhttp.send();
        }
    </script>
</head>
<body>

<h2>Books List</h2>

<button onclick="loadXMLDoc()">Get Books</button>

<div id="content"></div>

</body>
</html>

2.发送json数据请求,并将响应数据解析为HTML代码显示

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>XmlHttpRequest Demo</title>
    <script>
        function loadJSONDoc() {
            var xmlhttp;
            if (window.XMLHttpRequest) { // IE7+, Firefox, Chrome, Opera, Safari
                xmlhttp = new XMLHttpRequest();
            } else { // IE6, IE5
                xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
            }
            xmlhttp.onreadystatechange = function() {
                if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
                    var data = JSON.parse(xmlhttp.responseText);
                    var friends = data.friends;
                    var html = '';
                    for (var i = 0; i < friends.length; i++) {
                        var name = friends[i].name;
                        var age = friends[i].age;
                        var sex = friends[i].sex;
                        html += '<p>' + name + ' (' + sex + ', ' + age + ')</p>';
                    }
                    document.getElementById("content").innerHTML = html;
                }
            }
            xmlhttp.open("GET", "friends.json", true);
            xmlhttp.send();
        }
    </script>
</head>
<body>

<h2>Friends List</h2>

<button onclick="loadJSONDoc()">Get Friends</button>

<div id="content"></div>

</body>
</html>

以上就是使用php+Ajax处理xml与json格式数据的方法示例的完整攻略,希望能对你有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:php+Ajax处理xml与json格式数据的方法示例 - Python技术站

(0)
上一篇 2023年5月21日
下一篇 2023年5月21日

相关文章

  • 大数据相关常见面试题与答案整理

    大数据相关常见面试题与答案整理 1. 常见面试题 1.1 关于Hadoop的问题 Q1: Hadoop的优点是什么? A:Hadoop有三个主要的优点: 高可靠性:Hadoop通过将数据复制到不同的节点来实现高可靠性,并可以自动恢复失败的任务。 高扩展性:Hadoop可以很容易地扩展以适应数据规模的增加。只需要添加更多的节点即可。 高效性:Hadoop的高效…

    database 2023年5月19日
    00
  • ADO与ADO.NET的区别与介绍

    ADO与ADO.NET的区别与介绍 ADO 介绍 ActiveX Data Objects (ADO) 是一种用于数据访问的组件对象模型 (COM)。ADO 由 Microsoft 发布,用于连接不同数据源并对它们执行操作。这个技术已被其他数据访问技术所取代,但它仍然是一项有用的工具来理解数据访问。 ADO 提供了一个简单一致的模型来访问数据,无论它来自何种…

    database 2023年5月19日
    00
  • MySQL错误日志(Error Log)详解

    MySQL是一个开源的关系型数据库管理系统,广泛应用于各个领域中。 MySQL错误日志(Error Log)是MySQL数据库日志文件之一,记录了MySQL在运行时所发生的错误和异常信息。MySQL错误日志是MySQL管理员和开发人员诊断和解决问题的重要工具。 本文将详细介绍MySQL错误日志及其使用方法。 MySQL错误日志的类型 MySQL错误日志主要包…

    MySQL 2023年3月10日
    00
  • 详解Java获取环境变量及系统属性的方法

    详解Java获取环境变量及系统属性的方法 简介 Java程序可以获取当前操作系统的环境变量和系统属性。环境变量指的是操作系统中设置的变量,它们可以影响程序的行为。系统属性指的是Java虚拟机提供的参数,它们可以影响Java程序的行为。获取环境变量以及系统属性的方法都可以通过System类来完成。 获取环境变量 使用System.getenv()方法可以获取所…

    database 2023年5月21日
    00
  • Redis哨兵模式的配置

    绪论      现有三台设备,192.168.137.11、192.168.137.12和192.168.137.13,要求在三台设备上实现redis哨兵模式,其中192.168.137.11为master,其他两台为slave。 配置文件内容如下:   protected-mode no (关闭保护模式) port 6379 daemonize yes (…

    Redis 2023年4月13日
    00
  • 超全的webshell权限提升方法

    下面我来详细讲解“超全的webshell权限提升方法”的完整攻略。 什么是WebShell 在开始讲解 WebShell 权限提升的攻略之前,先简要介绍一下 WebShell。WebShell 是一种由黑客通过 Web 服务器的漏洞等方式上传到 Web 服务器中的一种脚本文件,可以通过 Web 服务器 HTTP 服务对外发布,并提供给黑客查看、控制 Web …

    database 2023年5月21日
    00
  • MySQL性能参数详解之Skip-External-Locking参数介绍

    MySQL性能参数详解之Skip-External-Locking参数介绍 前言 MySQL是当今世界上应用最广泛的开源数据库,通过大量的参数设置优化,可提升MySQL数据库的性能。其中Skip-External-Locking是一种比较常用的参数,本文将详细介绍该参数的含义、使用方法以及注意事项。 什么是Skip-External-Locking? Ski…

    database 2023年5月19日
    00
  • 一文搞懂Java的SPI机制(推荐)

    一文搞懂Java的SPI机制(推荐) 什么是SPI? SPI全称为Service Provider Interface,是Java提供的一种服务发现机制。简单来说,就是一种动态加载的方式,让开发者在不同的实现中选择所需要的服务。 SPI的作用 在实际开发中,我们希望引入一个框架或者接口,但是这个框架或者接口有很多不同的实现。SPI机制就是用来解决这个问题的,…

    database 2023年5月19日
    00
合作推广
合作推广
分享本页
返回顶部