| 以下为引用的内容: 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"); // 本地文件系统,当前目录
Chinaz_com
$xml = samplexml_load_file("http://www.xml.org.cn/messages.xml"); // 远程web服务器
用 var_dump($xml) 和 print_r($xml) 分别输出其结构.var_dump给出了变量的类型和长度,而print_r可读性更强输出对象中的所有元素名称和它的值。 中.国.
echo $xml->MessageTitle; //输出消息的标题 Chinaz
echo $xml->MessageBody; // 输出消息体
站.长站
echo $xml->MessageAuthor; //消息的作者 Www^
echo $xml->MessageDate; // 消息产生的日期
echo $xml->MessageNumber; // 消息代码
中国站长_站,为中文网站提供动力
===================================================
另外,还有一个函数,可以把XML字符串加载到一个simplexml对象中取。
| 以下为引用的内容: $channel =<<<_XML_ $xml = simplexml_load_string($channel);
中国.站.长站 rss.xml 中.国站长站 ============================================= Www_Chinaz_com <link>http://menu.example.com/dishes.php?dish=abalone</link> <description>There's no mistaking the special pleasure of abalone. </description> </item> </channel> </rss> ===================================================== Www~Chinaz~com |
Chinaz_com
1、访问具有相同元素名称的节点
2、通过foreach循环所有相同元素名称的子节点 中国.站长站
| 以下为引用的内容: foreach($xml->channel->item as $key=>$value) { print "Title: " . $item->title . "\n"; } |
3、输出整个文档 中国站长_站,为中文网站提供动力
echo $xml->asXML(); 站.长站
4、把节点作为字符串输出
中.国.
echo $xml->channel->item[0]->asXML();
这将输出文本
| 以下为引用的内容: <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> |
带文件名参数的asXML将会把原本输出的内容保存为一个文件
$xml->channel->item[0]->asXML("item[0].xml"); 站长.站
完整的代码:
| 以下为引用的内容: rss.xml 中国站.长站 rss.php 中.国站长站 echo "<h3>".$xml->channel->title."</h3><br>"; 中国 foreach ($xml->channel->item[0] as $element_name => $content) { echo "<hr>"; 中.国站长站 |
任何XML文本在输出前最好用 htmlentiteis() 函数编码后再输出,否这可能出现问题
Www~Chinaz~com