时间:2021-07-01 10:21:17 帮助过:25人阅读
要处理XML 文件,有两种传统的处理思路:SAX 和DOM。SAX 基于事件触发机制,对XML 文件进行一次扫描,完成要进行的处理;DOM 则将整个XML 文件构造为一棵DOM树,通过对DOM 树的遍历完成处理。这两种方法各有优缺点,SAX 的处理思路相对抽象,DOM 的处理过程相对烦琐,都不很适合新手的入门。PHP5 推出了一套新的XML 处理函数,即SimpleXML。名如其实,SimpleXML 本身小巧精干,只提供了少量的几个方法函数,但用它处理起XML 文件功能却非常强大,操作也非常的简单。
1.创建XML文件
$_xml =<<<xml "1.0" encoding="utf-8"?>xml; $_sxe= new SimpleXMLElement($_xml); //创建对象解析xml字符串$_sxe->asXML('test.xml'); //生成XML文件 1.0 xml解析测试 张三 http://www.ss.com "男">张三宿舍 http://www.ss.com "女">谁谁谁电驴 http://www.ss.com "男">姓黄的
2.载入XML文件
$_sxe= simplexml_load_file("test.xml"); //载入XML文件var_dump($_sxe); //输出相关信息print_r($_sxe); //输出主要信息Reflection::export(new ReflectionClass($sxe)); //用反射查看详情
3.解析XML文件
$_sxe= simplexml_load_file("test.xml"); //载入XML文件var_dump($_sxe); //输出相关信息print_r($_sxe); //输出主要信息Reflection::export(new ReflectionClass($_sxe)); //用发射查看详情echo $_sxe->asXML();//打印整个XML
4.读出XML数据
$_sxe= simplexml_load_file("test.xml"); //读取一级节点的值,比如version标签echo $_sxe->version; //如果有多个,可以设置它的数字下标echo $_sxe->version[2]; //如果想要全部打印出来,可以用遍历foreach ($_sxe->version as $_version) { echo '['.$_version.']'; } //访问二级节点的nameecho $_sxe->user[1]->name; //获取所有二级节点的name值foreach ($_sxe->user as $_user) { echo '['.$_user->name.']'; } //获取二级节点的标签的属性echo $_sxe->user[1]->author->attributes();
5.使用XPath来获取节点
$_sxe= simplexml_load_file("test.xml"); //使用XPath获取节点信息$_version = $_sxe->xpath('/root/version'); echo $_version[1]; //遍历versionforeach ($_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
很多情况下,手工生成标记要求从上到下生成文档,必须保证标签都是完整的,开始和结束标签。尽管借助于一些PHP函数或类可以有所改善,不过PHP还提供了一组更有帮助的内置对象和函数。文档对象模型(Document Object Model,DOM)提供了一个树状结构,能很容易创建和处理标签。
1.DOMDocument解析XML
//创建一个DOMDocument()$_doc = new DOMDocument(); //载入xml$_doc->load('test.xml'); //取version标签$_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创建与解析 XML 1 (36),包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。