定界符:<<<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;
需要注意的是:<<<EOF
和EOF
前不能有空格。当然也可以换成其他样式,没有固定规定。比如:<<<_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;
// }
?>