首頁  >  文章  >  後端開發  >  php中的XML DOM(11)

php中的XML DOM(11)

WBOY
WBOY原創
2016-08-08 09:27:45941瀏覽

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模型中的根節點

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

結果:

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

8、 刪除節點

   DOMNode DOMNode::removeChild ( DOMNode $oldnode )

   DOMNode $oldnode:要刪除的節點物件

範例:把以下藍色部分給刪除掉

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

9、修改節點

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

   DOMNode $newnode :新節點

   DOMNode $oldnode :原節點

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

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'這個屬性

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

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

  修改屬性

     string $name :屬性名稱

     string $value :屬性值

  如果一個節點沒有此屬性,表示新增屬性  (注意與上面的差異)

  如果一個節點已經存在這個屬性,表示修改屬性

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

  刪除屬性(不是刪除節點)

  $name:要刪除的屬性

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

4、取得屬性

   string DOMElement::getAttribute ( string $name )

   string $name:屬性名稱

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

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中的XML DOM(11),包含了面向的內容,希望對PHP教學有興趣的朋友有幫助。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn