用 PHP5 中的 SimpleXML 解析 XML 文档:
messages.xml 文件内容如下:
<?xml version=“1.0” ?>
<!–Sample XML document –>
<SystemMessage>
<MessageTitle>System Down for Maintenance</MessageTitle>
<MessageBody>Going down for maintenance soon!</MessageBody>
<MessageAuthor>
<MessageAuthorName>Joe SystemGod</MessageAuthorName>
<MessageAuthorEmail>systemgod@someserver.com
</MessageAuthorEmail>
</MessageAuthor>
<MessageDate>March 4, 2004</MessageDate>
<MessageNumber>10</MessageNumber>
</SystemMessage>
xml 是一种创建元数据的语言, 元数据是描述其它数据的数据,PHP 中的 XML 处理是基于 LIBXML2 的, 安装时默认开启.
可以通过 phpinfo() 函数查看是否开启了 XML 处理模块,DOM,LIBXML,SAMPLEXML.
首先, 通过 samplexml_load_file 函数把 xml 文件加载到一个对象中,samplexml_load_file 可以用户远程文件.
例如:
$xml = samplexml_load_file(“messages.xml”); // 本地文件系统, 当前目录
$xml = samplexml_load_file(“phpzixue.cn/rss1.xml”); // 远程 web 服务器
用 var_dump($xml) 和 print_r($xml) 分别输出其结构.var_dump 给出了变量的类型和长度, 而 print_r 可读性更强输出对象中的所有元素名称和它的值.
echo $xml->MessageTitle; // 输出消息的标题
echo $xml->MessageBody; // 输出消息体
echo $xml->MessageAuthor; // 消息的作者
echo $xml->MessageDate; // 消息产生的日期
echo $xml->MessageNumber; // 消息代码
另外, 还有一个函数, 可以把 XML 字符串加载到一个 simplexml 对象中取.
以下为引用的内容:
$channel =<<<_XML_
<channel>
<title>What's For Dinner</title>
<link>menu.example.com/</link>
<description>These are your choices of what to eat tonight. </description>
</channel>
_XML_;
$xml = simplexml_load_string($channel);
rss.xml
<?xml version=“1.0” encoding=“utf-8”?>
<rss version=“0.91”>
<channel>
<title>What's For Dinner</title>
<link>menu.example.com/</link>
<description>These are your choices of what to eat tonight.</description>
<item>
<title>Braised Sea Cucumber</title>
<link>http://menu.example.com/dishes.php?dish=cuke</link>
<description>Gentle flavors of the sea that nourish and refresh you. </description>
</item>
<item>
<title>Baked Giblets with Salt</title>
<link>menu.example./dishes.php?dish=giblets</link>
<description>Rich giblet flavor infused with salt and spice. </description>
</item>
<item>
<title>Abalone with Marrow and Duck Feet</title>
<link>menu.example./dishes.php?dish=abalone</link>
<description>There's no mistaking the special pleasure of abalone. </description>
</item>
</channel>
</rss>