php解析XML的两种方法
<?php // @parser 解析器 // @element 标签名字 // @attribs 属性 function xml_start ($parser, $element, $attribs) { echo $element . "\n"; } // @parser 解析器 // @element 标签 function xml_end($parser, $element) { echo $element . "\n"; } function xml_content($parser, $data) { echo $data . "\n"; } class First { function main () { $xmlStr = ' <xml> <ToUserName><![CDATA[toUser]]></ToUserName> <FromUserName><![CDATA[fromUser]]></FromUserName> <CreateTime>1348831860</CreateTime> <MsgType><![CDATA[text]]></MsgType> <Content><![CDATA[this is a test]]></Content> <MsgId>1234567890123456</MsgId> </xml> '; // 初始化一个XML解析器 $parser = xml_parser_create(); // 遇到开始标签调用xml_start(), 结束调用xml_end()函数 xml_set_element_handler($parser, "xml_start", "xml_end"); // 标签有内容调用xml_content() xml_set_character_data_handler($parser, "xml_content"); // xml解析 xml_parse($parser, $xmlStr, true); // 释放内存 xml_parser_free($parser); } } class Second { var $xmlStr = ' <xml> <ToUserName><![CDATA[toUser]]></ToUserName> <FromUserName><![CDATA[fromUser]]></FromUserName> <CreateTime>1348831860</CreateTime> <MsgType><![CDATA[text]]></MsgType> <Content><![CDATA[this is a test]]></Content> <MsgId>1234567890123456</MsgId> </xml>'; function main() { // 加载XML $XML = simplexml_load_string($this->xmlStr); // 知道XML标签内容可以直接使用标签名 echo $XML->ToUserName; } } //$first = new First(); //$first->main(); $second = new Second(); $second->main(); ?>