• 晋中市纪委公开曝光五起违反中央八项规定精神问题——晋中频道 2019-10-15
  • 新疆伊犁:薰衣草香飘万里 “紫色经济”成产业 2019-10-15
  • 《〈人民日报〉创刊70周年纪念邮资信封》发行 2019-10-14
  • 北京公园改造将引入无性别厕所--旅游频道 2019-10-14
  • 网络赌球水很深,球迷们千万不要碰! 赢了钱分分钟取不出来 2019-10-13
  • 蔡名照会见越通社社长阮德利 2019-10-13
  • 主城赏荷地图出炉 快带上相机出发 2019-10-11
  • 端午北京景区接待人数收入双降 未收到一日游投诉 2019-10-11
  • 新房才砌半堵墙 装修公司“跑路”了 2019-10-10
  • 连续不胜!卡帅造恒大最差战绩 他真是球队真命天子? 2019-10-08
  • 市场监管总局抽检518批次粽子 未检出不合格样品 2019-10-07
  • 女性之声——全国妇联 2019-10-05
  • 农民回答风水神,“勤劳的农民玩什么没有富起来”。(原创首发) 2019-10-05
  • 进不了朋友圈,身份认同难。 2019-10-04
  • 天津自贸试验区机场片区:融合联动 特色发展 2019-10-04
  • 湖北福彩30选5预测:PHP使用DOM对XML解析处理操作示例

    文章TAG:PHP 解析处理 xml DOM
    时间:2019-07-04来源/作者:Yeoman92 编辑:源码库 文章热度:

    双色球基本走势图表图 www.jpkp.net 本文实例讲述了PHP使用DOM对XML解析处理操作。分享给大家供大家参考,具体如下:

    DOM(Document Object Model):文档对象模型。核心思想是:把 xml文件看作是一个对象模型,然后通过对象的方式来操作 xml 文件。

    xml本身有许多节点:
        元素节点
        文本节点
        属性节点
        注释节点
        CDATA节点
        文档节点

    PHP,DOM,XML,解析处理

    php对xml文档进行增删改查(CURD)操作,具体分析如下:

    xml文档:class.xml

    <?xml version="1.0" encoding="utf-8"?>
    <class>
      <student info="美女">
        <name>小乔</name>
        <sex>女</sex>
        <age>20</age>
      </student>
      <student>
        <name>周瑜</name>
        <sex>男</sex>
        <age>25</age>
      </student>
    </class>
    
    

    PHP,DOM,XML,解析处理

    php文件(对xml文档操作)

    查询操作案例:

    <?php
    //1、创建一个DOMDocument对象。该对象就表示 xml文件
    $xmldoc = new DOMDocument();
    //2、加载xml文件(指定要解析哪个xml文件,此时dom树节点就会加载到内存中)
    $xmldoc->load("class.xml");
    //3、目标:获取第一个学生的名字
    //3.1 第一步,读取所有的学生
    /*方法getElementsByTagName:根据所给的节点名字(这里是student)查找 相应的节点,
    返回 DOMNodeList类型的对象,相当于取出了所有的学生。
    可以用var_dump($students)查看,并根据返回值查找手册,看其下面的属性与方法。*/
    $students = $xmldoc->getElementsByTagName("student");
    echo "共有 ".$students->length."个学生<br />";
    //3.2 读取第一个学生
    /*读取到第一个学生。返回值为DOMElement对象。
    直接 echo $stu1->nodeValue;则把name,sex,age都输出。*/
    $stu1 = $students->item(0);
    //3.3 取出第一个学生的名字
    $stu1_name = $stu1->getElementsByTagName("name");
    //3.4 读取到名字
    echo $stu1_name->item(0)->nodeValue;
    ?>
    
    

    注意点:

    (1)编码问题; 
    (2)这里只是基础演示,比较麻烦,后面用到循环和函数来操作; 
    (3)用var_dump(),查看变量的返回值是什么,再根据返回值到手册中查找该返回值下的属性与方法。 
    (4)整个顺序下来,getElementByTagName()并不需要一层一层的读,事实上可以直接读取到节点name的,而不需要先读取student(当然,如果同一个student下,有多个name,就会出问题了,这里就需要学习新的知识点xpath)。

    所以上面这代码可以简单改为:

    <?php
    //1、创建一个DOMDocument对象。该对象就表示 xml文件
    $xmldoc = new DOMDocument();
    //2、加载xml文件(指定要解析哪个xml文件,此时dom树节点就会加载到内存中)
    $xmldoc->load("class.xml");
    //3、目标:获取第一个学生的名字
    $stu = $xmldoc->getElementsByTagName("name");//直接找到节点name
    $stu1 = $stu->item(0);// item(1)时,可以取到周瑜
    echo $stu1->nodeValue;
    ?>
    
    

    创建xml的各种节点

    节点元素:createElement(标签名称) 
    文本元素:createTextNode(文本内容) 
    属性节点:createAttribute(属性名称) 
    CDATA节点:createCDATASection(文本内容)

    父节点.appendChild(子节点)

    dom创建xml文档案例

    <?php
    ini_set('display_errors',1);
    //利用dom方式创建一个xml文档
    /*
    <dog>
      <name>xiaohuang</name>
      <color>yellow</color>
      <age></age>
    </dog>
    */
    $dom = new DOMDocument('1.0','utf-8');
    //创建元素节点
    $dog = $dom -> createElement('dog');
    $name = $dom -> createElement('name');
    $color = $dom -> createElement('color');
    $age = $dom -> createElement('age');
    //创建文本节点
    $name_txt = $dom -> createTextNode('xiaohuang');
    $color_txt = $dom -> createTextNode('yellow');
    $age_txt = $dom -> createTextNode('2');
    //追加
    //元素节点追加文本节点
    $name -> appendChild($name_txt);
    $color -> appendChild($color_txt);
    $age -> appendChild($age_txt);
    //元素节点追加元素节点
    $dog -> appendChild($name);
    $dog -> appendChild($color);
    $dog -> appendChild($age);
    //最外面的根节点需要给dom节点追加
    $dom -> appendChild($dog);
    //方法(1)输出xml信息到浏览器
    header("content-type:text/xml;charset=utf-8");
    echo $dom -> saveXML();//信息直接输出到浏览器中
    //方法(2)输出xml信息到指定文件
    $dom -> formatOutput = true;
    $dom -> save("./file_xml.xml");
    
    

    结果为

    PHP,DOM,XML,解析处理

    创建属性节点

    <?php
    ini_set('display_errors',1);
    //利用dom方式创建一个xml文档
    /*
    <dog>
      <name weight="50" height="90">xiaohuang</name>
      <color>yellow</color>
      <age></age>
    </dog>
    */
    $dom = new DOMDocument('1.0','utf-8');
    //创建元素节点
    $dog = $dom -> createElement('dog');
    $name = $dom -> createElement('name');
    $color = $dom -> createElement('color');
    $age = $dom -> createElement('age');
    //创建文本节点
    $name_txt = $dom -> createTextNode('xiaohuang');
    $color_txt = $dom -> createTextNode('yellow');
    $age_txt = $dom -> createTextNode('2');
    //追加
    //元素节点追加文本节点
    $name -> appendChild($name_txt);
    $color -> appendChild($color_txt);
    $age -> appendChild($age_txt);
    //元素节点追加元素节点
    $dog -> appendChild($name);
    $dog -> appendChild($color);
    $dog -> appendChild($age);
    //创建属性节点方法(1),给name节点创建weight属性节点
    $weight_txt = $dom -> createTextNode('50');
    $weight = $dom -> createAttribute('weight');
    $weight -> appendChild($weight_txt);//属性节点追加自己的文本节点
    $name -> appendChild($weight);//属性节点被追加到对应的元素节点中
    //创建属性节点方法(2),给name节点创建height属性节点
    $name -> setAttribute('height',90);
    //最外面的根节点需要给dom节点追加
    $dom -> appendChild($dog);
    //方法(1)输出xml信息到浏览器
    header("content-type:text/xml;charset=utf-8");
    echo $dom -> saveXML();//信息直接输出到浏览器中
    //方法(2)输出xml信息到指定文件
    $dom -> formatOutput = true;
    $dom -> save("./file_xml.xml");
    
    

    PHP,DOM,XML,解析处理

     

    希望本文所述对大家PHP程序设计有所帮助。


    注:相关教程知识阅读请移步到PHP教程频道。
    相关PHP教程
    热门标签

    PHP教程Rss订阅PHP教程搜索

  • 晋中市纪委公开曝光五起违反中央八项规定精神问题——晋中频道 2019-10-15
  • 新疆伊犁:薰衣草香飘万里 “紫色经济”成产业 2019-10-15
  • 《〈人民日报〉创刊70周年纪念邮资信封》发行 2019-10-14
  • 北京公园改造将引入无性别厕所--旅游频道 2019-10-14
  • 网络赌球水很深,球迷们千万不要碰! 赢了钱分分钟取不出来 2019-10-13
  • 蔡名照会见越通社社长阮德利 2019-10-13
  • 主城赏荷地图出炉 快带上相机出发 2019-10-11
  • 端午北京景区接待人数收入双降 未收到一日游投诉 2019-10-11
  • 新房才砌半堵墙 装修公司“跑路”了 2019-10-10
  • 连续不胜!卡帅造恒大最差战绩 他真是球队真命天子? 2019-10-08
  • 市场监管总局抽检518批次粽子 未检出不合格样品 2019-10-07
  • 女性之声——全国妇联 2019-10-05
  • 农民回答风水神,“勤劳的农民玩什么没有富起来”。(原创首发) 2019-10-05
  • 进不了朋友圈,身份认同难。 2019-10-04
  • 天津自贸试验区机场片区:融合联动 特色发展 2019-10-04
  • 欢乐升级2017版 jdb财神捕鱼有赢家吗 乐博线上娱乐开户 大乐透最后投注时间 重庆时时参考软件 复式二中二连码公开 Welcome-四川金7乐当日开奖查绚 三张牌游戏炸金花 白小姐一肖中持免费大公开 辽宁11选五走势图今天 361足球直播 网上养狗软件真有钱赚 wnba比分直播网 北京11选5预测推荐 河南十一选五走势图百度彩票