PHP操作XML文档/数据

2018-01-18 14:55:00
linefo
原创
492


前言


关于XML的介绍,可以先去看一下我写的XML教程:

http://www.linefo.com/index.php/book/manual-xml/1170.html


读取XML对象


这里总共有三个相关的函数:

simplexml_import_dom — 从 DOM 节点获取 SimpleXMLElement 对象

simplexml_load_file — 从 XML 文档获取 SimpleXMLElement 对象

simplexml_load_string — 从 XML 字符串获取 SimpleXMLElement 对象


用simplexml_load_string()函数读取:

(这里用了PHP定界符的写法,同时在这里xml文本靠左边界的写法是必须的)


<?php
        $data = 
<<<XML
<?xml version="1.0" encoding="ISO-8859-1"?>
<note>
    <page>
        <to>Tove</to>
        <from>Jani</from>
    </page>
    <page>
        <to>Jim</to>
        <from>Sum</from>
    </page>
</note>
XML;
        $Xml = simplexml_load_string($data); // 此时$Xml是一个SimpleXMLElement对象
        echo $Xml->page[1]->to;  // 输出根元素note下,第二个page元素的子元素to的值,即Jim

另外两个函数这里就不说明了,自己可以尝试一下


操作XML对象


上面已经简单讲了读取数据的方法,这里我们进行补充


首先要先了解SimpleXMLElement对象的一些方法:

SimpleXMLElement::addAttribute — 给 SimpleXML 元素添加一个属性
SimpleXMLElement::addChild — 给 SimpleXML 元素添加一个子元素
SimpleXMLElement::asXML — 从 SimpleXML 元素获取 XML 字符串
SimpleXMLElement::attributes — 获取 SimpleXML 元素的属性
SimpleXMLElement::children — 获取指定节点的子元素
SimpleXMLElement::count — Counts the children of an element
SimpleXMLElement::getDocNamespaces — 获取 XML 文档的命名空间
SimpleXMLElement::getName — 获取 SimpleXML 元素的名称
SimpleXMLElement::getNamespaces — 从 XML 数据获取命名空间
SimpleXMLElement::registerXPathNamespace — 为下一次 XPath 查询创建命名空间语境
SimpleXMLElement::xpath — 对 XML 数据运行 XPath 查询


我们使用 children() 以及 getName() 来做一个遍历:



<?php
        $data = 
<<<XML
<?xml version="1.0" encoding="ISO-8859-1"?>
<note>
    <page>
        <to>Tove</to>
        <from>Jani</from>
    </page>
    <page>
        <to>Jim</to>
        <from>Sum</from>
    </page>
</note>
XML;
        $Xml = simplexml_load_string($data); // 此时$Xml是一个SimpleXMLElement对象
        
        foreach($Xml->children() as $child){ // $child指page元素(遍历note元素)
            foreach($child->children() as $ch){ // $ch指page元素下的to和from元素(遍历当前的page元素)
                echo $ch->getName().":".$ch."<br />"; // 直接输出$ch就是输出元素的值
            }
        }



其他方法这里就不详细说明了


DOMDocument 这个类也可以操作XML文档(但不仅仅是XML文档,比SimpleXMLElement 功能更多)

文章分类
联系我们
联系人: Mr.Chen
QQ: 185391277