PHP和XML


XML是一种标记语言,看起来很像HTML。XML文档是纯文本文件,其中包含由<>分隔的标签。XML和HTML之间有两大区别 -

  • XML没有定义您必须使用的特定标签集合。
  • XML对文档结构非常挑剔。

XML为您提供了比HTML更多的自由。HTML具有一定的标记集合:<a> </a>标记围绕链接,<p>开始段落等等。但是,XML文档可以使用任何您想要的标签。将<rating> </ rating>标签放在电影评级周围,<height> </height>标签围绕某人的身高。因此XML给你选择设备你自己的标签。

XML在文档结构方面非常严格。HTML可以让你在打开和关闭标签时快速松动。但是XML不是这种情况。

HTML列表不是有效的XML

<ul>
   <li>Braised Sea Cucumber
   <li>Baked Giblets with Salt
   <li>Abalone with Marrow and Duck Feet
</ul>

这不是有效的XML文档,因为没有与<li>标签匹配的</li>标签。XML文档中的每个打开的标签都必须关闭。

HTML列表是有效的XML

<ul>
   <li>Braised Sea Cucumber</li>
   <li>Baked Giblets with Salt</li>
   <li>Abalone with Marrow and Duck Feet</li>
</ul>

解析XML文档

PHP 5的新 SimpleXML 模块很容易解析XML文档。它将XML文档转换为提供对XML的结构化访问的对象。

要从存储在字符串中的XML文档创建SimpleXML对象,请将该字符串传递给 simplexml_load_string() 。它返回一个SimpleXML对象。

试试下面的例子

<html>
   <body>

      <?php
         $note=<<<XML

         <note>
            <to>Gopal K Verma</to>
            <from>Sairamkrishna</from>
            <heading>Project submission</heading>
            <body>Please see clearly </body>
         </note>

         XML;
         $xml=simplexml_load_string($note);
         print_r($xml);
      ?>

   </body>
</html>

它会产生以下结果 -

解析XML

- 如果 文件中 包含XML内容,则可以使用函数 simplexml_load_file(文件名)

有关XML解析函数的完整详细信息,请参阅PHP函数参考

生成一个XML文档

SimpleXML适用于解析现有的XML文档,但不能用它从头开始创建一个新文档。

生成XML文档的最简单方法是构建一个PHP数组,其结构与XML文档的结构相同,然后遍历数组,以适当的格式打印每个元素。

试试下面的例子 -

<?php
 $channel = array('title' => "What's For Dinner",
    'link' => 'http://menu.example.com/',
    'description' => 'Choose what to eat tonight.');

 print "<channel>\n";

 foreach ($channel as $element => $content) {
    print " <$element>";
    print htmlentities($content);
    print "</$element>\n";
 }

 print "</channel>";
?>

它会产生以下结果 -

http://menu.example.com/ Choose what to eat tonight.