zoukankan      html  css  js  c++  java
  • PHP创建与解析 XML 1 (36)

    一.使用SimpleXML操控XML

    要处理XML 文件,有两种传统的处理思路:SAX 和DOM。SAX 基于事件触发机制,对XML 文件进行一次扫描,完成要进行的处理;DOM 则将整个XML 文件构造为一棵DOM树,通过对DOM 树的遍历完成处理。这两种方法各有优缺点,SAX 的处理思路相对抽象,DOM 的处理过程相对烦琐,都不很适合新手的入门。PHP5 推出了一套新的XML 处理函数,即SimpleXML。名如其实,SimpleXML 本身小巧精干,只提供了少量的几个方法函数,但用它处理起XML 文件功能却非常强大,操作也非常的简单。

      1.创建XML文件

    $_xml =<<<xml
    <?xml version="1.0" encoding="utf-8"?>
    <root>
    <version>1.0</version>
    <info>xml解析测试</info>
    <user>
    <name>张三</name>
    <url>http://www.ss.com</url>
    <author sex="">张三</author>
    </user>
    <user>
    <name>宿舍</name>
    <url>http://www.ss.com</url>
    <author sex="">谁谁谁</author>
    </user>
    <user>
    <name>电驴</name>
    <url>http://www.ss.com</url>
    <author sex="">姓黄的</author>
    </user>
    </root>
    xml;
    $_sxe= new SimpleXMLElement($_xml); //创建对象解析xml字符串
    $_sxe->asXML('test.xml'); //生成XML文件

      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.']';
    }
    //访问二级节点的name
    echo $_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];
    //遍历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

    很多情况下,手工生成标记要求从上到下生成文档,必须保证标签都是完整的,开始和结束标签。尽管借助于一些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');

     

  • 相关阅读:
    CentOS linux系统搭建LAMP环境
    网站跳出率高的优化方案
    IT痴汉的工作现状24-Just for fun
    windows下远程连接ubantu
    Hibernate基础映射
    我院同学在2013年第四届“蓝桥杯”全国软件专业人才设计与创业大赛全国总决赛中获得佳绩
    Linux下打开串口设置
    zoj 3261 Connections in Galaxy War
    Android之startActivityForResult的使用
    当心Azure跨区域数据传输产生额外费用
  • 原文地址:https://www.cnblogs.com/zhenghongxin/p/4538078.html
Copyright © 2011-2022 走看看