xml学习笔记2---xml的解析
目标:根据一个已知的xml获取一件商品的名字。
总结:
处理这个问题的流程已写在了php的注释之中。xml学习的过程中要始终把握一切皆节点这一原则,空格换行也不例外。
根据dom树,根据其节点对应的对象的类型我自己简单的将不同类对象概括为:标签(元素)类型(domElement)、属性类型(domAttribute)、文本节点类型(domeText),和节点列表类型(domnodelist),括号内的红色字体为手册内给出的类,我在此处没有区分大小写。
根据手册可以发现,他们有很多的相同的属性方法,继承了domnode类。并且有些节点对象不同的属性,可能有相同的值。不同的对象,相同的属性有相同的值。
XML语言: 高亮代码由发芽网提供
01 <?xml version='1.0' encoding = "utf-8" ?>
02 <shop>
03 <goods gid="1">
04 <name>天龙八部</name>
05 <price>12.3</price>
06 <desc> <![CDATA[这是一本好书,>10000人在读]]> </desc>
07 </goods>
08 <goods gid="1">
09 <name>诺基亚</name>
10 <price>999</price>
11 <desc> <![CDATA[这是一部好手机]]> </desc>
12 </goods>
13 </shop>
02 <shop>
03 <goods gid="1">
04 <name>天龙八部</name>
05 <price>12.3</price>
06 <desc> <![CDATA[这是一本好书,>10000人在读]]> </desc>
07 </goods>
08 <goods gid="1">
09 <name>诺基亚</name>
10 <price>999</price>
11 <desc> <![CDATA[这是一部好手机]]> </desc>
12 </goods>
13 </shop>
PHP语言: 高亮代码由发芽网提供
01 <?php
02 //获取一件商品名字
03
04 //1.创建一个空dom对象并将xml加载到内存中
05 header("Content-type: text/html; charset=utf-8");
06 $dom=new DOMdocument("1.0","utf-8"); //DOMDocument Object
07 $dom->load("1.xml");
08
09 //print_r($dom);
10 //2.获取<name>节点列表 document
11 $goods_name = $dom->getElementsByTagName("name");//DOMNodeList Object
12 //print_r($goods_name);
13
14 //3.从列表元素中得到一件商品的名字
15 //DOMNodeList Object有一个属性一个方法
16 /*echo '有'.$goods_name->length.'件商品<br/>';
17 for ($i=0; $i < $goods_name->length; $i++) {
18 echo "<br/><pre>";
19 print_r($goods_name->item($i)); // $goods_name->item($i) DOMElement Object
20 echo "</pre>";
21 }
22 */
23
24 $temp = $goods_name->item(0);
25 // echo "<br/><pre>";
26 // print_r($temp);
27 // echo "</pre>";
28
29 $textnode = $temp->childNodes;
30 //echo "<br/><pre>";
31 //print_r($name);
32 //echo "</pre>";
33
34 //查看textnode每个元素对象的详细信息。
35 // print_r($textnode);
36 // for ($i=0; $i < $textnode->length; $i++) {
37 // echo "<br/><pre>";
38 // print_r($textnode->item($i));
39 // echo "</pre>";
40 // }
41
42 echo $textnode->item(0)->wholeText.'<br/>';
43 echo $textnode->item(0)->textContent.'<br/>';
44 echo $textnode->item(0)->nodeValue.'<br/>';
45
46 //echo $temp->wholeText.'<br/>';
47 echo var_dump($temp->textContent).'<br/>';
48 echo var_dump($temp->nodeValue).'<br/>';
49
50 ?>
02 //获取一件商品名字
03
04 //1.创建一个空dom对象并将xml加载到内存中
05 header("Content-type: text/html; charset=utf-8");
06 $dom=new DOMdocument("1.0","utf-8"); //DOMDocument Object
07 $dom->load("1.xml");
08
09 //print_r($dom);
10 //2.获取<name>节点列表 document
11 $goods_name = $dom->getElementsByTagName("name");//DOMNodeList Object
12 //print_r($goods_name);
13
14 //3.从列表元素中得到一件商品的名字
15 //DOMNodeList Object有一个属性一个方法
16 /*echo '有'.$goods_name->length.'件商品<br/>';
17 for ($i=0; $i < $goods_name->length; $i++) {
18 echo "<br/><pre>";
19 print_r($goods_name->item($i)); // $goods_name->item($i) DOMElement Object
20 echo "</pre>";
21 }
22 */
23
24 $temp = $goods_name->item(0);
25 // echo "<br/><pre>";
26 // print_r($temp);
27 // echo "</pre>";
28
29 $textnode = $temp->childNodes;
30 //echo "<br/><pre>";
31 //print_r($name);
32 //echo "</pre>";
33
34 //查看textnode每个元素对象的详细信息。
35 // print_r($textnode);
36 // for ($i=0; $i < $textnode->length; $i++) {
37 // echo "<br/><pre>";
38 // print_r($textnode->item($i));
39 // echo "</pre>";
40 // }
41
42 echo $textnode->item(0)->wholeText.'<br/>';
43 echo $textnode->item(0)->textContent.'<br/>';
44 echo $textnode->item(0)->nodeValue.'<br/>';
45
46 //echo $temp->wholeText.'<br/>';
47 echo var_dump($temp->textContent).'<br/>';
48 echo var_dump($temp->nodeValue).'<br/>';
49
50 ?>
xml学习笔记2---xml的解析
http://blog.soul11201.com/2014/02/02/xml2-xml/