Rumah > pembangunan bahagian belakang > Tutorial XML/RSS > XML的解析与创建范例

XML的解析与创建范例

little bottle
Lepaskan: 2019-04-23 15:23:19
ke hadapan
6086 orang telah melayarinya

XML用来传输和存储数据,如何解析获取到的XML文本呢?本篇文章讲述的是对xml文本的解析与创建,具有一定参考价值,感兴趣的朋友可以来了解一下。

一.解析XML

创建demo.xml文件:

1

2

3

4

5

6

7

8

9

10

11

12

13

<?xml version="1.0" encoding="UTF-8"?> <bookstore>

    <book book_id="1">

      <title>php</title>

      <author>php入门到放弃</author>

    </book>

    <book book_id="2">

      <title>java</title>

      <author>java入门到放弃</author>

    </book>

    <book book_id="3">

      <title>C</title>

      <author>C入门到放弃</author>

    </book></bookstore>

Salin selepas log masuk

使用PHP解析demo.xml中的内容,以获取到php这个文本节点为例:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

<?php

    /*思路:1.先载入xml文档

    2.获取节点列表对象

    3.获取子节点对象

    4.获取子节点列表对象

    5.获取文本对象 如果层级比较深就是循环2-4步,先拿列表对象,再拿子节点对象...*/

    $dom = new DOMDocument(&#39;1.0&#39;,&#39;UTF-8&#39;);

    //print_r($dom); //DOMDocument Object

    $dom->load(&#39;demo.xml&#39;); //载入要解析的xml文档

    $titleList = $dom->getElementsByTagName(&#39;title&#39;); ////DOMNodeList Object ( [length] => 3 ) 获取节点列表对象

    $title = $titleList->item(0); //DOMElement Object 获取子节点对象

    $title = $title->childNodes; //DOMNodeList Object ( [length] => 1 )获取子节点列表对象

    $title = $title->item(0); //DOMText Object 获取到文本对象

    $text = $title->wholeText; //获取到文本内容

    echo $text; //php

    echo &#39;<br>&#39;;

    //也可以直接写成连贯操作: 

    $text = $dom->getElementsByTagName(&#39;title&#39;)->item(0)->childNodes->item(0)->wholeText;

    echo $text; //php

    echo &#39;<br>&#39;;

    //第二种方法:

    $text = $dom->getElementsByTagName(&#39;title&#39;)->item(0)->nodeValue; //获取到文本内容

    echo $text; //php

Salin selepas log masuk

除了解析之外,还可以对xml节点进行删除和替换操作:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

$dom = new DOMDocument(&#39;1.0&#39;,&#39;UTF-8&#39;);

$dom->load(&#39;demo.xml&#39;); //载入要解析的xml文档

/**

 *xml删除节点

 * */

$php = $dom->getElementsByTagName(&#39;book&#39;)->item(0); //获取文本节点

$php->parentNode->removeChild($php); //获取文本节点的父节点,然后站在父节点的立场删除子文本节点

/**

 * xml替换节点

 * */

$java = $dom->getElementsByTagName(&#39;title&#39;)->item(0); //获取要替换的文本节点

$newnode = $dom->createTextNode(&#39;python&#39;); //创建新的文本节点

$java->replaceChild($newnode,$java->firstChild); //用新节点替换旧文本节点内容

header("content-type:text/xml");

echo $dom->saveXML(); //直接输出xml文本     

Salin selepas log masuk

二.创建XML

使用PHP创建一个如下的XML文件:

1

2

3

4

5

<?xml version="1.0" encoding="UTF-8"?> <bookstore>

 <book book_id="1">

     <title>php</title>

     <author><![CDATA[PHP是世界上最好的编程语言.emmm...]]></author>

 </book></bookstore>

Salin selepas log masuk

PHP代码:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

<?php

    $dom = new DOMDocument(&#39;1.0&#39;,&#39;UTF-8&#39;);

    $text $dom->createTextNode(&#39;php&#39;); //创建文本节点

    $title = $dom->createElement(&#39;title&#39;); //创建普通节点

    $title->appendChild($text); //将文本节点作为子节点添加到普通节点内

    $cdata = $dom->createCDATASection(&#39;PHP是世界上最好的编程语言.emmm...&#39;); //创建CDATA节点

    $author = $dom->createElement(&#39;author&#39;); //创建普通节点

    $author->appendChild($cdata); //将CDATA节点作为子节点添加到普通节点内

    $book = $dom->createElement(&#39;book&#39;); //创建普通节点

    //将上面创建的两个普通节点作为子节点添加到普通节点内

    $book->appendChild($title);

    $book->appendChild($author);

    $book_id = $dom->createAttribute(&#39;book_id&#39;); //创建属性名

    $book_id->value = &#39;1&#39;; //创建属性值

    $book->appendChild($book_id); //将属性加到普通节点内

    $bookstore = $dom->createElement(&#39;bookstore&#39;); //创建普通节点

    $bookstore->appendChild($book); //将普通节点作为子节点添加到普通节点内

    $dom->appendChild($bookstore); //将普通节点添加到文档内

    // header("content-type:text/xml");

    // echo $dom->saveXML(); //直接输出xml文本

    echo $dom->save(&#39;demo.xml&#39;); //生成xml文件

Salin selepas log masuk

在浏览器输出如下图:

相关教程:XML视频教程

 

Atas ialah kandungan terperinci XML的解析与创建范例. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
xml
sumber:cnblogs.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan