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 <实体引用>这里必须使用引用“<”、“>”、“&”</实体引用> 4 <CDATA标记> 5 <![CDATA[ 6 这里可以正常输出“<”、“>”、“&”。 7 ]]> 8 </CDATA标记> 9 </exam>
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 ?>
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 ?>
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 ?>
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 ?>
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 ?>
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 ?>
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 ?>
1 <?xml version="1.0" encoding="gb2312"?> 2 <object name="商品"> 3 <book> 4 <computerbook type="PHP程序员必备工具">PHP函数参考大全</computerbook> 5 </book> 6 </object>
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 ?>
浙公网安备 33010602011771号