PHP操作XML数据

作者: 呆猫极客 | 来源:发表于2017-03-10 18:57 被阅读0次
    • 什么是XML

    1. XML是可扩展性标记语言
    2. 设计宗旨是为了传输数据
    3. XML标签没有被预定义,需要自行定义
    • XML的用途

      1. xml可以当做配置文件
      2. xml可以当小型数据库
      3. xml是跨平台的语言,用于各个语言之间的数据交互
    • XML语法规范

      1. 声明一个处理指令<?xml version='1.0' encoding='utf-8'?>
      2. 文档为树状结构,只能有一个根目录
      3. 标签必须合法,标签必须闭合(单双标签),大小写一致,不能交叉。
      4. 属性必须有值,属性值必须有引号
      5. 特殊符号使用符号实体(单引号'双引号"空格 &符号&大于号<小于号>)
      6. 有特殊符号的大段内容使用<![CDATA[内容]]>表示

    如下所示:

    <?xml version='1.0' encoding='utf-8'?>
    <student>
         <student1>
              <name>xiaoming</name>
              <age>24</age>
              <style hobby="girl" />
         </student1>
         <student2>
               <name>xiaohong</name>
               <age>24</age>
               <style hobby="play" />
         </student2>
    </student>
    
    • javascript操作xml

    • 创建空的xml对象
    try{
         xmlDoc=new ActiveXObject('Microsoft.XML');//IE创建xmlDoc
    }catch(e){
         try{
              xmlDoc=document.implementation.createDocument('','',null);//opera,mozilla,firefox等创建xmlDoc
         }catch(e){
              alert(e.message);
         }   
    }
    
    • 加载xml文件
    try{
         xmlDoc.async=false;//关闭异步加载
         xmlDoc.load=('xml_goods.xml');
         //document.write('已经加载好了');
    }catch(e){
         alert(e.message);
    }
    
    • 获取xml文件的节点
            var students = xmlDoc.getElementsByTagName('student1');//取到所有标签为student1的节点
            var student = students[0];//取到第一个studnet1
            var studentnote = student.children;//取到第一个student的所有元素子节点
            var name = studentnote[0].childNodes[0].nodeValue;//取到第一个节点name的第一个节点的值
            window.alert(name);   
    
    • 用PHP操作xml

    • xmlDOM方法
    • 实例化一个xmldom对象

    $xmlDoc = new DOMDocument('1.0','utf-8');
    
    • 加载xml文件
    $xmlDoc->load('./student.xml');//加载本地xml文件
    $xmlDoc->loadXML('xml字符串');//加载xml字符串
    
    • 通过getElementsByTagName('')方法获取DOMNodeList对

    $xmlDoc->getElementsByTagName('name');

    • 通过调用DOMNodeList里的item()方法得到DOMElement对象

    $xmlDoc->getElementsByTagName('name')->item(0);

    • 通过nodeValue属性,来获取节点的值

    $xmlDoc->getElementsByTagName('name')->item(0)->nodeValue;

    • simplexml方法
    • 获取xml对象

    $simplexml = simplexml_load_file('./jing.xml');
    //或者
    $xml = file_get_contents('jing.xml'); //获取字符串
    $simplexml = simplexml_load_string($xml);
    
    • 调用对象的属性值从而获得xml标签值

    $simplexml->stu[0]->sex;

    作者:jingks
    此为原创文章,请勿用在商业用途,转载请标明作者。

    相关文章

      网友评论

        本文标题:PHP操作XML数据

        本文链接:https://www.haomeiwen.com/subject/jljogttx.html