欢迎您访问我爱IT技术网,今天小编为你分享的编程技术是:【用PHP5的SimpleXML解析XML文档】,下面是详细的分享!
用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("http://www.xml.org.cn/messages.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_ $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();
这将输出文本
| 以下为引用的内容: <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() 函数编码后再输出,否这可能出现问题
以上所分享的是关于用PHP5的SimpleXML解析XML文档,下面是编辑为你推荐的有价值的用户互动:
相关问题:XML 文档定义有几种形式?它们之间有何本质区别?...
答:XML 文档定义有两种形式 dtd schema 本质区别 :schema 本身是 xml 的,可以被 XML 解析器解析 ( 这也是从 DTD 上发展 schema 的根本目的 ) 解析XML 文档的方式: DOM,SAX,STAX 等 DOM: 处理大型文件时其性能下降的非常厉害。这个问题是由 DOM 的... >>详细
相关问题:sax和dom在解析xml文档时有什么区别
答:SAX概念 SAX是Simple API for XML的缩写,它并不是由W3C官方所提出的标准,可以说是“民间”的事实标准。实际上,它是一种社区性质的讨论产物。虽然如此,在XML中对SAX的应用丝毫不比DOM少,几乎所有的XML解析器都会支持它。 与 DOM比较而言,SAX... >>详细
相关问题:如何解析下面的xml文档,我需要节点里面的属性值
答:在实际的应用开发中需要我们对xml进行添加节点和属性,动态的去完成,在这之前,先看看XmlNode和XmlElement之间的关系 1、XmlElement继承XmlLinkedNode又继承XmlNode,所以XmlElement是XmlNode的子集,那么从继承的关系来说, XmlNode的属性,Xm... >>详细
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
