• 白云区新办证大厅户籍办理服务平台正式投入使用啦 2019-07-13
  • 关于人类所有的知识问题,其实都是社会问题。就“社会”两个字。 2019-07-13
  • 百姓故事:蒋姐姐的旗袍人生 2019-07-10
  • 这艘军舰有美国导弹护体 仍被中国反舰导弹轻松击沉 2019-07-09
  • 把你当猪就有可能。不想得病而羸弱就得身强体壮。首先,想依靠消灭病毒而不得病,那只是痴心妄想。其次,想得天下,从来没有靠肉体的征服而成功过的先例。 2019-07-09
  • 《国家哲学社会科学“十一五”研究状况与“十二五”发展趋势》一书出版 2019-07-06
  • 夏天吃雪糕怕伤胃拉肚子 如何健康吃冷饮——食品安全频道——黄河新闻网 2019-07-06
  • 2018年成都卫星城市仍将大放异彩?下一站:资阳北 ——凤凰网房产成都 2019-07-05
  • 皇家地暖长啥样?《故宫新事》带你探寻养心殿的秘密 2019-07-05
  • 南昌古风物略记文章中国国家地理网 2019-07-01
  • 推进新时代中国特色社会主义云南新实践——访云南省委书记陈豪 2019-06-28
  • 十二届全国人大常委会第七次会议 2019-06-28
  • 原中行一支行员工被判刑 利用职务便利骗取巨额贷款并诈骗 2019-06-24
  • 孕期压力大影响胎儿大脑发育 2019-06-14
  • 俄罗斯足球队50横扫沙特队真是让人大饱眼福,特提精神!俄罗斯是战斗民族名不虚传。 2019-06-10
  • 湖北省十一选五: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-07-13
  • 关于人类所有的知识问题,其实都是社会问题。就“社会”两个字。 2019-07-13
  • 百姓故事:蒋姐姐的旗袍人生 2019-07-10
  • 这艘军舰有美国导弹护体 仍被中国反舰导弹轻松击沉 2019-07-09
  • 把你当猪就有可能。不想得病而羸弱就得身强体壮。首先,想依靠消灭病毒而不得病,那只是痴心妄想。其次,想得天下,从来没有靠肉体的征服而成功过的先例。 2019-07-09
  • 《国家哲学社会科学“十一五”研究状况与“十二五”发展趋势》一书出版 2019-07-06
  • 夏天吃雪糕怕伤胃拉肚子 如何健康吃冷饮——食品安全频道——黄河新闻网 2019-07-06
  • 2018年成都卫星城市仍将大放异彩?下一站:资阳北 ——凤凰网房产成都 2019-07-05
  • 皇家地暖长啥样?《故宫新事》带你探寻养心殿的秘密 2019-07-05
  • 南昌古风物略记文章中国国家地理网 2019-07-01
  • 推进新时代中国特色社会主义云南新实践——访云南省委书记陈豪 2019-06-28
  • 十二届全国人大常委会第七次会议 2019-06-28
  • 原中行一支行员工被判刑 利用职务便利骗取巨额贷款并诈骗 2019-06-24
  • 孕期压力大影响胎儿大脑发育 2019-06-14
  • 俄罗斯足球队50横扫沙特队真是让人大饱眼福,特提精神!俄罗斯是战斗民族名不虚传。 2019-06-10
  • 双色球预测专家app 山西快乐10分基本走势图 福建体彩31选7复式玩法 中国福利彩票36选7开奖结果 双色球几点停售 河北排列7走势图 2019年丹东彩票销售员招聘信息 竞彩足球比分直插现场 6月14日甘肃快3走势 网球王子真版第一季 博彩基本理论题 深圳风采2019093 重庆幸运农场计划 足彩6场半全场怎么卖 精准平特肖