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对象。
示例
试试下面的例子 -
<?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);
?>
它会产生以下结果 -
SimpleXMLElement Object ( [to] => Gopal K Verma [from] => Sairamkrishna [heading] => Project submission [body] => Please see clearly )
注 - 如果文件中包含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>
";
foreach ($channel as $element => $content) {
print " <$element>";
print htmlentities($content);
print "</$element>
";
}
print "</channel>";
?>
执行上面示例代码,得到以下结果 -
http://menu.example.com/ Choose what to eat tonight.