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 文档中的每个打开的标签都必须关闭。

有效 XML 的 HTML 列表

<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( filename) 。

有关 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.