zoukankan      html  css  js  c++  java
  • php中的XML DOM(11)

    7.创建节点

       在dom操作中,增删改操作必须要找父节点

    1、DOMElement DOMDocument::createElement ( string $name [, string $value ] )

       创建节点 ,返回的是一个节点对象

         string $name :节点的名  (元素名)

         [, string $value ] :节点的值

    2、DOMNode DOMNode::appendChild ( DOMNode $newnode )

       追加子节点

         DOMNode $newnode:子节点

    3、int DOMDocument::save ( string $filename )

       将dom中的数据保存到指定的文件中

    4、documentElement属性,表示dom模型中的根节点

    <?php
        header ( 'Content-Type:text/html;charset=gb2312' );
        $dom = new DOMDocument ( '1.0', 'utf-8' );
        $dom->load ( 'demo01.xml' );
    // 创建节点仅仅是表示在内存中创建出这个节点对象,但这个对象和我们之前的
    // dom模型没有任何联系
        $person = $dom->createElement ( 'person' );
        $name = $dom->createElement ( 'name', 'huangliu' );
        $age = $dom->createElement ( 'age', '18' );
    // 将name和age做为子节点追加至person节点
        $person->appendChild ( $name );
        $person->appendChild ( $age );
    // $dom->getElementsByTagName('persons')->item(0)->appendChild($newnode)
    // 将person做了子节点追加至根节点
        $dom->documentElement->appendChild ( $person );
    // 将dom中的所有数据重新保存到demo01.xml文件中
        $dom->save ( 'demo01.xml' );

    结果:

    <person>
            <name>huangliu</name>
            <age>18</age>
        </person>

    8、 删除节点

       DOMNode DOMNode::removeChild ( DOMNode $oldnode )

       DOMNode $oldnode:要被删除的节点对象

    示例:把以下蓝色部分给删除掉

    <?php
        header ( 'Content-Type:text/html;charset=gb2312' );
        $dom = new DOMDocument ( '1.0', 'utf-8' );
        $dom->load ( 'demo01.xml' );
    // 首先找到要删除的节点对象
        $person = $dom->getElementsByTagName ( 'person' )->item ( 1 );
    // 将节点删除
        $dom->documentElement->removeChild ( $person );
    // 重新保存文件
        $dom->save ( 'demo01.xml' );

    9、修改节点

       DOMNode DOMNode::replaceChild ( DOMNode $newnode , DOMNode $oldnode )

       DOMNode $newnode :新节点

       DOMNode $oldnode :原节点

    <?php
        header ( 'Content-Type:text/html;charset=gb2312' );
        $dom = new DOMDocument ( '1.0', 'utf-8' );
        $dom->load ( 'demo01.xml' );
    // 找到要被替换掉的节点
        $oldNode = $dom->getElementsByTagName ( 'person' )->item ( 2 );
    // 创建出新的节点
        $person = $dom->createElement ( 'person' );
        $name = $dom->createElement ( 'name', 'songjiang' );
        $age = $dom->createElement ( 'age', 100 );
        $person->appendChild ( $name );
        $person->appendChild ( $age );
    // 用新节点替换原节点
        $dom->documentElement->replaceChild ( $person, $oldNode );
    // 保存文件
        $dom->save ( 'demo01.xml' );

    10、    保存

       string DOMDocument::saveXML

             将dom中的数据保存至一个字符串变量中

       int DOMDocument::save ( string $filename )

             将dom中的数据保存到指定的文件中

    11、关于属性的增删改

       1、DOMAttr DOMElement::setAttribute( string $name , string $value )

        添加属性

         string $name :属性名

         string $value :属性值

       为person添加id='s102'这个属性

    <?php
        header ( 'Content-Type:text/html;charset=gb2312' );
        $dom = new DOMDocument ( '1.0', 'utf-8' );
        $dom->load ( 'demo01.xml' );
    // 为第二个人添加id属性
    // 找到第二个人
        $person = $dom->getElementsByTagName ( 'person' )->item ( 1 );
    // 添加id属性
        $person->setAttribute ( 'id', 's102' );
    // 保存文件
        $dom->save ( 'demo01.xml' );

    2、  DOMAttr DOMElement::setAttribute( string $name , string $value )

      修改属性

         string $name :属性名

         string $value :属性值

      如果一个节点没有此属性,表示添加属性  (注意与上面的区别)

      如果一个节点已经存在这个属性,表示修改属性

    3、bool DOMElement::removeAttribute ( string $name )

      删除属性(不是删除节点)

      $name:要被删除的属性

    <?php
        header ( 'Content-Type:text/html;charset=gb2312' );
        $dom = new DOMDocument ( '1.0', 'utf-8' );
        $dom->load ( 'demo01.xml' );
    // 删除第2个人的id属性
    // 找到第二个人
        $person = $dom->getElementsByTagName ( 'person' )->item ( 1 );
    // 删除id属性
        $person->removeAttribute('id');
    // 保存文件
        $dom->save ( 'demo01.xml' );

    4、获取属性

       string DOMElement::getAttribute ( string $name )

       string $name:属性名

    <?php
        header ( 'Content-Type:text/html;charset=gb2312' );
        $dom = new DOMDocument ( '1.0', 'utf-8' );
        $dom->load ( 'demo01.xml' );
    // 查询第1个人的id属性
    // 找到第1个人
        $person = $dom->getElementsByTagName ( 'person' )->item ( 0 );
    // 查询id属性
        echo $person->getAttribute('id');

    12  SimpleXML

       PHP DOM:增删改

       SimpleXML:查询

    一、 读取xml

    1、  simpleXMLElement simplexml_load_file ( string $filename)

        从某个xml文件中读取数据

         string $filename:xml文件名

    2、SimpleXMLElement::__construct ( string data)

        从某个字符串中读取数据

         String data:xml格式的字符串

    如果数据保存到文件中,使用simplexml_load_file读取

    如果数据保存到字符串中,使用SimpleXMLElement类的构造方法读取

  • 相关阅读:
    php memcache分布式和要注意的问题
    PHP延迟静态绑定(本文属于转发)
    WebSocket实战
    HTML5本地存储(Local Storage) 的前世今生
    HTML5本地存储——IndexedDB
    HTML5 FileReader
    HTML5 FormData对象
    2017-2018-1 20155225 实验四 外设驱动程序设计
    2017-2018-1 20155225 《信息安全系统设计基础》第十一周学习总结
    Linux下的IPC机制
  • 原文地址:https://www.cnblogs.com/zhenghongxin/p/4356895.html
Copyright © 2011-2022 走看看