XML数据的操作

2018-08-16  本文已影响12人  老衲灬

1、XML的基本语法

<!-- 声明XML文件 注意:可以不声明,如果声明则要放在文档的第一行 -->
<?xml version="1.0" encoding="utf-8"?>
<!-- 
    1、必须有根标签
    2、标签名称可以自己定义,不建议使用特殊字符,建议使用字母数字下划线
    3、所有的标签都是成对的闭合标签
    4、标签对大小写敏感
 -->
<root>
    <student>
        <name>张三</name>
        <age>18</age>
    </student>
    <student>
        <name>李四</name>
        <age>20</age>
    </student>
</root>

2、php解析XML

①php解析XML文件或者字符串所使用的函数
//将XML文件解释成一个对象
$xml = simplexml_load_file("./test.xml");   //test.xml文件即XML基本语法中的示例代码
var_dump($xml);

//将XML字符串解释成一个对象
$strXML = "<root><student><name>张三</name><age>18</age></student><student><name>李四</name><age>20</age></student></root>";
$xml = simplexml_load_string($strXML);
var_dump($xml);
结果如下:
②通过foreach或者for循环获取XML中的值
//将XML文件解释成一个对象
$xml = simplexml_load_file("./test.xml");
//foreach遍历取出name
$names = "";
foreach($xml->student as $v){
    $names .= $v->name;
}
//echo $names;  //结果:张三李四

//for循环取出name
$names = "";
for($i=0;$i<count($xml->student);$i++){
    $names .= ($xml->student)[$i]->name;
}
echo $names;    //结果:张三李四

3、php函数解析XML的原理

XML在解析时一共要经历三个步骤:
①读取XML文档到内存;
②形成DOM树结构;

③生成SimpleXML对象。

4、php生成XML并返回给Ajax

直接构建字符串即可,示例:

//构建XML字符串
$strXML = "<root><student><name>张三</name><age>18</age></student><student><name>李四</name><age>20</age></student></root>";
//响应头声明文件类型
header("Content-Type:text/xml");
//返回数据
echo $strXML;

5、Ajax获取XMl数据

通过Ajax对象.responseXML接收服务器传来的XML数据,Js会将其解析为DOM树,所以,Js操作XML数据就和操作html节点的数据一样。

<script type="text/javascript"> 
    var xhr = new XMLHttpRequest();
    xhr.onreadystatechange = function(){
        if(xhr.readyState == 4){
            var xml = xhr.responseXML;
            //操作XML数据
            var name = xml.getElementsByTagName("name");
            var names = "";
            for(var i=0;i<name.length;i++){
                //注意:此处只能使用innerHTML,这里name对象并没有innerText属性
                names += name[i].innerHTML;
            }
            console.log(names); //结果:张三李四
        }
    }
    xhr.open("get","./test.php");
    xhr.send();
</script>
上一篇 下一篇

猜你喜欢

热点阅读