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类的构造方法读取

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。