以下为引用的内容:
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。 Chinaz@com
首先,通过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^Chinaz^com
echo $xml->MessageDate; // 消息产生的日期 Www@Chinaz@com
echo $xml->MessageNumber; // 消息代码
中国站长_站,为中文网站提供动力
===================================================
中.国站长站
另外,还有一个函数,可以把XML字符串加载到一个simplexml对象中取。
Www@Chinaz@com
以下为引用的内容:
$channel =<<<_XML_
<channel>
<title>What’s For Dinner</title>
<link>http://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>http://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>http://menu.example.com/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>
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、访问具有相同元素名称的节点
Chinaz.com
2、通过foreach循环所有相同元素名称的子节点 中国.站长站
以下为引用的内容:
foreach($xml->channel->item as $key=>$value)
{
print "Title: " . $item->title . "\n";
}
Chinaz^com
3、输出整个文档 中国站长_站,为中文网站提供动力
echo $xml->asXML(); 站.长站
4、把节点作为字符串输出
中.国.站.长.站
echo $xml->channel->item[0]->asXML(); Www@Chinaz@com
这将输出文本
Chinaz
以下为引用的内容:
<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>
Chinaz
带文件名参数的asXML将会把原本输出的内容保存为一个文件 Chinaz^com
$xml->channel->item[0]->asXML("item[0].xml"); 站长.站
完整的代码:
中国站长.站
以下为引用的内容:
rss.xml
=====
<?xml version="1.0" encoding="utf-8"?>
<rss version="0.91">
<channel>
<title>What’s For Dinner</title>
<link>http://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>http://menu.example.com/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>http://menu.example.com/dishes.php?dish=abalone</link>
<description>There’s no mistaking the special pleasure of abalone. </description>
</item>
</channel>
</rss>
中国站.长站
rss.php
======
<?php
$xml = simplexml_load_file("rss.xml");
中.国站长站
echo "<h3>".$xml->channel->title."</h3><br>";
echo "<ul>";
echo "<li>Title:".$xml->channel->item[0]->title."</li>";
echo "<li>Title:".$xml->channel->item[1]->title."</li>";
echo "<li>Title:".$xml->channel->item[2]->title."</li>";
echo "</ul>";
print "Title: " . $xml->channel->item[0]->title . "\n<br>";
print "Title: " . $xml->channel->item[1]->title . "\n<br>";
print "Title: " . $xml->channel->item[2]->title . "\n<br>";
echo "<hr>";
中国站.长.站
foreach ($xml->channel->item[0] as $element_name => $content) {
print "The $element_name is $content\n<br>";
} Chinaz~com
echo "<hr>";
print_r($xml);
echo $xml->channel->item[0]->asXML();
?>
中.国站长站
Www@Chinaz@com
任何XML文本在输出前最好用 htmlentiteis() 函数编码后再输出,否这可能出现问题
Www~Chinaz~com