//使用SimpleXML控制xml
//注意空格
$_xml =<<<xml
<?xml version="1.0" encoding="utf-8"?>
<root>
<version>1.0</version>
<info>xml解析测试</info>
<user>
<name>瓢城Web俱乐部</name>
<url>http://www.yc60.com</url>
<author sex="男">李炎恢</author>
</user>
<user>
<name>北风网</name>
<url>http://www.ibeifeng.com</url>
<author sex="女">谁谁谁</author>
</user>
<user>
<name>电驴</name>
<url>http://www.verycd.com</url>
<author sex="男">姓黄的</author>
</user>
</root>
xml;
$_sxe= new SimpleXMLElement($_xml); //创建对象解析xml字符串
$_sxe->asXML('test.xml'); //生成XML文件
//载入文件到解析XML文件
$_sxe= simplexml_load_file("test.xml"); //载入XML文件
var_dump($_sxe); //输出相关信息
print_r($_sxe); //输出主要信息
Reflection::export(new ReflectionClass($_sxe)); //用发射查看详情
echo $_sxe->asXML();//打印整个XML
//读出XML数据方法一:
$_sxe= simplexml_load_file("test.xml");//载入XML文件
//读取一级节点的值,比如version标签
echo $_sxe->version;
//如果有多个,可以设置它的数字下标
echo $_sxe->version[2];
//如果想要全部打印出来,可以用遍历
foreach ($_sxe->version as $_version) {
echo '['.$_version.']';
}
//访问二级节点的name
echo $_sxe->user[1]->name;
//获取所有二级节点的name值
foreach ($_sxe->user as $_user) {
echo '['.$_user->name.']';
}
//获取二级节点的标签的属性,比如标签里的sex="男"
echo $_sxe->user[1]->author->attributes();
5.读取XML数据方法二:使用XPath来获取节点
$_sxe= simplexml_load_file("test.xml");//载入XML文件
//使用XPath获取节点信息
$_version = $_sxe->xpath('/root/version');//获取到指定目录
echo $_version[1];
//遍历version
foreach ($_version as $_v) {
echo '['.$_v.']';
}
//访问二级节点
$_user = $_sxe->xpath('/root/user');
echo $_user[2]->name;
//遍历二级节点
foreach ($_user as $_u) {
echo '['.$_u->name.']';
}
//访问属性
echo $_user[1]->author->attributes();
//使用DOMDocument 操控XML
1.DOMDocument解析XML,读取xml,并遍历出来
//创建一个DOMDocument()
$_doc = new DOMDocument();
//载入xml
$_doc->load('test.xml');
//取version标签,nodeValue这个值换成其他的就是区代码或者区内容
$_version = $_doc->getElementsByTagName('version');
echo $_version->item(2)->nodeValue;
//遍历version标签
foreach ($_version as $v) {
echo $v->nodeValue;
}
2.DOMDocument生成XML
//声明xml
$_doc = new DOMDocument('1.0','utf-8');
//排版格式
$_doc->formatOutput = true;
//创建一个主标签
$_root = $_doc->createElement('root');
//创建一个一级标签version
$_version = $_doc->createElement('version');
//给version标签里赋值
$_versionTextNode = $_doc->createTextNode('1.0');
//将值放入version标签里
$_version->appendChild($_versionTextNode);
//将一级标签version放入root里
$_root->appendChild($_version);
//将主标签写入xml
$_doc->appendChild($_root);
//生成xml
$_doc->save('aaa.xml');
在李炎恢php课程第二季10-13课