PHP创建与解析XML

定界符:<<<EOF......EOF
用于存放复杂,多样化的字符串。

<<<EOF
    <a href="javascript:edit('asd', 'aaa')">编辑</a> |

    <font color="#ccc">删除</font>

    <a href="javascript:confirmurl('?m=admin&posid=12')">删除</a> |

    <font color="red">启用</font></a> |  

    <a href="javascript:preview('3','ds')"><font color="green">演示</font></a>
EOF;

需要注意的是:<<<EOFEOF前不能有空格。当然也可以换成其他样式,没有固定规定。比如:<<<_xml_xml也可以。

xml页面小案例:

<?xml version="1.0" encoding="utf-8"?>
<root>
    <version>1.0</version>
    <info>xml解析测试</info>
    <user>
        <name>猛码科技</name>
        <url>http://www.itmoom.com</url>
        <author sex="男">黄尼玛</author>
    </user>
    <user>
        <name>猛码网</name>
        <url>http://www.itmoom.com</url>
        <author sex="女">李四</author>
    </user>
    <user>
        <name>电驴</name>
        <url>http://www.test.com</url>
        <aurhor sex="男">张三</aurhor>
    </user>
</root>

生成xml文件

基于上面的xml文件,这里使用simpleXML()函数和asXML()函数:

<?php //生成一个xml文件 //xml字符串 $_xml=<<<_xml <?xml version="1.0" encoding="utf-8"?>
<root>
    <version>1.0</version>
    <info>xml解析测试</info>
    <user>
        <name>猛码科技</name>
        <url>http://www.itmoom.com</url>
        <author sex="男">黄尼玛</author>
    </user>
    <user>
        <name>猛码网</name>
        <url>http://www.itmoom.com</url>
        <author sex="女">李四</author>
    </user>
    <user>
        <name>电驴</name>
        <url>http://www.test.com</url>
        <aurhor sex="男">张三</aurhor>
    </user>
</root>
_xml;

    //创建一个simplexml对象,传入xml字符串
    $_sxe = new SimpleXMLElement($_xml);
    //生成xml文件
    $_sxe->asXML('ttt.xml');
 ?>

这样就会在相应页面所在位置生成了一个名为“ttt.xml”的文件。

载入XML文件

使用 simplexml_load_file() 函数可以载入xml。
载入并输入xml: 输出依然使用asXML()函数

<?php 
//载入xml文件,simplexml
$_sxe = simplexml_load_file('ttt.xml');

//测试输出,这里不能使用echo直接输出,当然也可以用print_r()方式输出
 echo $_sxe->asXML();
 ?>

解析XML文件

<?php 
//载入xml文件,simplexml
$_sxe = simplexml_load_file('ttt.xml');

//读取一级标签的值
    //echo $_sxe->version;

//如果有多个version标签。那就通过打印数组的方式输出
    //echo $_sxe->version[0];

//是数组就可以用遍历
    // foreach ($_sxe->version as $_v) {
    //  echo '['.$_v.']';
    // }

//如果要访问二级标签,需要逐层指明
    // echo $_sxe->user->name; //指代:第一个user下的第一个name

//遍历所有的name值,  echo这里是从user指向name。
    // foreach ($_sxe->user as $_user) {
    //  echo '['.$_user->name.']';   
    // }

//输出第二个user里的author的性别
    echo $_sxe->user[1]->author->attributes();

 ?>

attributes()可以打印出属性。

使用xpath获取xml节点

<?php 
//载入xml文件,simplexml
$_sxe = simplexml_load_file('ttt.xml');
//获取version的值,首先获取要打印输出值的路径,root是根路径
//然后将查找到的值赋给变量。由于是数组形式,所有可以进行分段输出或者遍历。
    // $_version =  $_sxe->xpath('/root/version');
    // echo $_version[1];

//因为是数组,所以也可以通过遍历的形式输出。
    foreach ($_sxe->xpath('/root/version') as $key) {
            echo '['.$key.']';
        }   
 ?>

DOMDocument操控XML

载入xml

<?php 
//创建dom对象
    $_doc = new DOMDocument();
//载入xml文件
    $_doc->load('ttt.xml');
//取version标签值,getElementsByTagName查找传入的标签
    $_version = $_doc->getElementsByTagName('version'); 
//打印出第一组的值。item(0)表示第几个,nodeValue表示标签里的值    
    // echo $_version->item(0)->nodeValue;
//遍历循环输出
    // foreach ($_version as $_v) {
    //      echo $_v->nodeValue;
    //  }   
 ?>

创建xml

猜你喜欢

转载自blog.csdn.net/qq_36432666/article/details/79808316