PHP基础(019)---XML

XML(eXtensible Markup Language),扩展性标记语言,它是用来描述其他语言的语言,它允许用户设计自已的标记。XML产生的原因是为了补充HTML语言的不足,使网络语言更加规范化,多样化。

XML语法:

<?xml version="1.0" encoding="gb2312" standalone="yes"?>    ---XML的声明
<?xml-stylesheet type="text/css" href="Book.css"?>                 ---XML处理指令
<!--  下面的标签<计算机图书>就是这个XML文档的根目录  -->           ---XML的注释,与HTML一样
<计算机图书>                                                                          ---XML元素
 <PHP>
   <书名>PHP程序开发范例宝典</书名>
   <价格 单位="元/本">89.00</价格>                                          ---XML属性"单位"
   <出版时间>2007-09-01</出版时间>
 </PHP>
</计算机图书>

补充:

1)使用CDATA标记,在XML中的特殊字符使用实体引用来处理;当遇到大量特殊处理时,就需要用到CDATA标记了。

1 <?xml version="1.0" encoding="GB2312"?>
2 <exam>
3     <实体引用>这里必须使用引用“&lt;”、“&gt;”、“&amp;</实体引用>
4     <CDATA标记>
5     <![CDATA[
6         这里可以正常输出“<”、“>”、“&”。
7     ]]>
8     </CDATA标记>
9 </exam>
View Code

2)XML命名空间:

<?xml version="1.0" encoding="gb2312" standalone="yes"?>
<外语图书 xmlns:frn="http://www.bccd.com/foreign">                      ---XML命名空间
 <frn:English>
  <frn:书名>许国璋英语</frn:书名>
  <frn:价格 货币种类="RMB" 单位="4本">80.00</frn:价格>
  <frn:出版时间>1996-05-10</frn:出版时间>
 </frn:English>
</外语图书>
3)在PHP中创建XML文档:

 1 <?php
 2     header('Content-type:text/xml');
 3     echo '<?xml version="1.0"  encoding="gb2312" ?>';
 4     echo '<计算机图书>';
 5     echo '<PHP>';
 6     echo '<书名>PHP项目开发全程实录</书名>';
 7     echo '<价格>85.00RMB</价格>';
 8     echo '<出版日期>2008-5-5</出版日期>';
 9     echo '</PHP>';
10     echo '</计算机图书>';
11 ?>
View Code

4)使用DOMXML函数和SimpleXML函数等来操作XML文档。

4.1)创建SimpleXML对象 

 1 <?php
 2 header('Content-Type:text/html;charset=utf-8');
 3 ?>
 4 <style type="text/css">
 5 <!--
 6 body,td,th {
 7     font-size: 12px;
 8 }
 9 body {
10     margin-left: 10px;
11     margin-top: 10px;
12     margin-right: 10px;
13     margin-bottom: 10px;
14 }
15 -->
16 </style>
17 <?php
18 /*  第一种方法  */
19 $xml_1 = simplexml_load_file("5.xml");
20 print_r($xml_1);
21 /*  第二种方法  */
22 $str = <<<XML
23 <?xml version='1.0' encoding='gb2312'?>
24 <Object>
25     <ComputerBook>
26         <title>PHP从入门到精通</title>
27     </ComputerBook>
28 </Object>
29 XML;
30 $xml_2 = simplexml_load_string($str);
31 echo '<br>';
32 print_r($xml_2);
33 /*  第三种方法  */
34 $dom = new domDocument();
35 $dom -> loadXML($str);
36 $xml_3 = simplexml_import_dom($dom);
37 echo '<br>';
38 print_r($xml_3);
39 ?>
View Code

4.2)遍历所有子元素

 1 <?php
 2 header('Content-Type:text/html;charset=utf-8');
 3 ?>
 4 <style type="text/css">
 5 <!--
 6 body,td,th {
 7     font-size: 12px;
 8 }
 9 body {
10     margin-left: 10px;
11     margin-top: 10px;
12     margin-right: 10px;
13     margin-bottom: 10px;
14 }
15 -->
16 </style>
17 <?php
18 $str = <<<XML
19 <?xml version='1.0' encoding='gb2312'?>
20 <object>
21     <book>
22         <computerbook>PHP从入门到精通</computerbook>
23     </book>
24     <book>
25         <computerbook>PHP项目开发全程实录</computerbook>
26     </book>
27 </object>
28 XML;
29 $xml = simplexml_load_string($str);
30 foreach($xml->children() as $layer_one){
31     print_r($layer_one);
32     echo '<br>';
33     foreach($layer_one->children() as $layer_two){
34         print_r($layer_two);
35         echo '<br>';
36     }
37 }
38 ?>
View Code

4.3)遍历所有属性

 1 <?php
 2 header('Content-Type:text/html;charset=utf-8');
 3 ?>
 4 <style type="text/css">
 5 <!--
 6 body,td,th {
 7     font-size: 12px;
 8 }
 9 body {
10     margin-left: 10px;
11     margin-top: 10px;
12     margin-right: 10px;
13     margin-bottom: 10px;
14 }
15 -->
16 </style>
17 <?php
18 $str = <<<XML
19 <?xml version='1.0' encoding='gb2312'?>
20 <object name='commodity'>
21     <book type='computerbook'>
22         <bookname name='PHP从入门到精通'/>
23     </book>
24     <book type='historybook'>
25         <booknanme name='上下五千年'/>
26     </book>
27 </object>
28 XML;
29 $xml = simplexml_load_string($str);
30 foreach($xml->children() as $layer_one){
31     foreach($layer_one->attributes() as $name => $vl){
32         echo $name.'::'.$vl;
33     }
34     echo '<br>';
35     foreach($layer_one->children() as $layer_two){
36         foreach($layer_two->attributes() as $nm => $vl){
37             echo $nm."::".$vl;
38         }
39         echo '<br>';
40     }
41 }
42 ?>
View Code

4.4)访问特定节点元素和属性

 1 <?php
 2     header('Content-Type:text/html;charset=utf-8');
 3 ?>
 4 <style type="text/css">
 5 <!--
 6 body,td,th {
 7     font-size: 12px;
 8 }
 9 body {
10     margin-left: 10px;
11     margin-top: 10px;
12     margin-right: 10px;
13     margin-bottom: 10px;
14 }
15 -->
16 </style>
17 <?php
18 $str = <<<XML
19 <?xml version='1.0' encoding='gb2312'?>
20 <object name='商品'>
21     <book>
22         <computerbook>PHP从入门到精通</computerbook>
23     </book>
24     <book>
25         <computerbook name='PHP项目开发全程实录'/>
26     </book>
27 </object>
28 XML;
29 $xml = simplexml_load_string($str);
30 echo $xml[name].'<br>';
31 echo $xml->book[0]->computerbook.'<br>';
32 echo $xml->book[1]->computerbook['name'].'<br>';
33 ?>
View Code

4.5)修改XML数据

 1 <?php
 2 header('Content-Type:text/html;charset=utf-8');
 3 $str=<<<XML
 4 <?xml version='1.0' encoding='gb2312'?>
 5 <object name='商品'>
 6     <book>
 7         <computerbook type='PHP入门应用'>PHP从入门到精通</computerbook>
 8     </book>
 9 </object>
10 XML;
11 
12 $xml = simplexml_load_string($str);
13 echo $xml[name].'<br />';
14 $xml->book->computerbook['type'] = iconv('gb2312','utf-8','PHP程序员必备工具');
15 $xml->book->computerbook = iconv('gb2312','utf-8','PHP函数参考大全');
16 echo $xml->book->computerbook['type'].' => ';
17 echo $xml->book->computerbook;
18 ?>
View Code

4.6)保存XML文档

1 <?php
2 $xml = simplexml_load_file('10.xml');
3 $xml->book->computerbook['type'] = iconv('gb2312','utf-8','PHP程序员必备工具');
4 $xml->book->computerbook = iconv('gb2312','utf-8','PHP函数参考大全');
5 $modi = $xml->asXML();
6 file_put_contents('10.xml',$modi);
7 $str = file_get_contents('10.xml');
8 echo $str;
9 ?>
View Code
1 <?xml version="1.0" encoding="gb2312"?>
2 <object name="商品">
3     <book>
4         <computerbook type="PHP程序员必备工具">PHP函数参考大全</computerbook>
5     </book>
6 </object>
View Code

4.7)动态创建XML文档

 1 <?php
 2 $dom = new DomDocument('1.0','gb2312');
 3 $object = $dom->createElement('object');
 4 $dom->appendChild($object);
 5 $book = $dom->createElement('book');
 6 $object->appendChild($book);
 7 $computerbook = $dom->createElement('computerbook');
 8 $book->appendChild($computerbook);
 9 $type = $dom->createAttribute('type');
10 $computerbook->appendChild($type);
11 $type_value = $dom->createTextNode('computer');
12 $type->appendChild($type_value);
13 $bookname = $dom->createElement('bookname');
14 $computerbook->appendChild($bookname);
15 $bookname_value = $dom->createTextNode(iconv('gb2312','utf-8','PHP从入门到精通'));
16 $bookname->appendChild($bookname_value);
17 echo $dom->saveXML();
18 ?>
View Code

 

posted on 2014-05-03 17:14  lbsf  阅读(154)  评论(0)    收藏  举报

导航