2008年(5645)
分类:
2008-04-28 14:20:14
以下为引用的内容: messages.xml ======================================================== ======================================================== |
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("); // 远程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_ $xml = simplexml_load_string($channel); rss.xml ============================================= |
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();
这将输出文本
以下为引用的内容: http://menu.example.com/dishes.php?dish=cuke |
带文件名参数的asXML将会把原本输出的内容保存为一个文件
$xml->channel->item[0]->asXML("item[0].xml");
完整的代码:
以下为引用的内容: rss.xml rss.php echo " ".$xml->channel->title.""; echo "
echo " echo " echo " echo " print "Title: " . $xml->channel->item[0]->title . "\n "; print "Title: " . $xml->channel->item[1]->title . "\n "; print "Title: " . $xml->channel->item[2]->title . "\n "; echo " "; foreach ($xml->channel->item[0] as $element_name => $content) { echo " "; print_r($xml); echo $xml->channel->item[0]->asXML(); ?> |
任何XML文本在输出前最好用 htmlentiteis() 函数编码后再输出,否这可能出现问题!
以下为引用的内容: messages.xml ======================================================== ======================================================== |
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("); // 远程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_ $xml = simplexml_load_string($channel); rss.xml ============================================= |
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();
这将输出文本
以下为引用的内容: http://menu.example.com/dishes.php?dish=cuke |
带文件名参数的asXML将会把原本输出的内容保存为一个文件
$xml->channel->item[0]->asXML("item[0].xml");
完整的代码:
以下为引用的内容: rss.xml rss.php echo " ".$xml->channel->title.""; echo "
echo " echo " echo " echo " print "Title: " . $xml->channel->item[0]->title . "\n "; print "Title: " . $xml->channel->item[1]->title . "\n "; print "Title: " . $xml->channel->item[2]->title . "\n "; echo " "; foreach ($xml->channel->item[0] as $element_name => $content) { echo " "; print_r($xml); echo $xml->channel->item[0]->asXML(); ?> |
任何XML文本在输出前最好用 htmlentiteis() 函数编码后再输出,否这可能出现问题!
下载本文示例代码