books.xml文件:
代码
<books>
<book>
<author>Jack Herrington</author>
<title>PHP Hacks</title>
<publisher>O'Reilly</publisher>
</book>
<book>
<author>Jack Herrington</author>
<title>Podcasting Hacks</title>
<publisher>O'Reilly</publisher>
</book>
</books>

 

一.DOMDocument圆法
代码
 一 <?php
 二 $doc = new DOMDocument();
 三 $doc->load( 'books.xml' );
 四 $books = $doc->getElementsByTagName( "book" );
 五 foreach$books as $book )
 六 {
 七 $authors = $book->getElementsByTagName( "author" );
 八 $author = $authors->item(0)->nodeValue;
 九 
一0 $publishers = $book->getElementsByTagName( "publisher" );
一一 $publisher = $publishers->item(0)->nodeValue;
一二 
一三 $titles = $book->getElementsByTagName( "title" );
一四 $title = $titles->item(0)->nodeValue;
一五 
一六 echo "$title - $author - $publisher\n";
一七 echo "<br>";
一八 }
一九 ?> 

 

二.用 SAX 解析器读与 XML

 

代码
 一 <?php
 二 $g_books = array();
 三 $g_elem = null;
 四 
 五 function startElement( $parser, $name, $attrs ) 
 六 {
 七 global $g_books, $g_elem;
 八 if ( $name == 'BOOK' ) $g_books []= array();
 九 $g_elem = $name;
一0 }
一一 
一二 function endElement( $parser, $name ) 
一三 {
一四 global $g_elem;
一五 $g_elem = null;
一六 }
一七 
一八 function textData( $parser, $text )
一九 {
二0 global $g_books, $g_elem;
二一 if ( $g_elem == 'AUTHOR' ||
二二 $g_elem == 'PUBLISHER' ||
二三 $g_elem == 'TITLE' )
二四 {
二五 $g_bookscount$g_books ) -  ][ $g_elem ] = $text;
二六 }
二七 }
二八 
二九 $parser = xml_parser_create();
三0 
三一 xml_set_element_handler$parser, "startElement", "endElement" );
三二 xml_set_character_data_handler$parser, "textData" );
三三 
三四 $f = fopen'books.xml', 'r' );
三五 
三六 while$data = fread$f, 四0九六 ) )
三七 {
三八 xml_parse$parser, $data );
三九 }
四0 
四一 xml_parser_free$parser );
四二 
四三 foreach$g_books as $book )
四四 {
四五 echo $book['TITLE']." - ".$book['AUTHOR']." - ";
四六 echo $book['PUBLISHER']."\n";
四七 }
四八 ?>

 

 

三.用正铃博网则表铃博网达式解析 XML

 

代码
 一 <?php
 二 $xml = "";
 三 $f = fopen'books.xml', 'r' );
 四 while$data = fread$f, 四0九六 ) ) {
 五     $xml .= $data
 六 }
 七 fclose$f );
 八 
 九 preg_match_all"/\<book\>(.*?)\<\/book\>/s", $xml, $bookblocks );
一0 
一一 foreach$bookblocks[as $block )
一二 {
一三 preg_match_all"/\<author\>(.*?)\<\/author\>/", $block, $author );
一四 preg_match_all"/\<title\>(.*?)\<\/title\>/",   $block, $title );
一五 preg_match_all"/\<publisher\>(.*?)\<\/publisher\>/", $block, $publisher );
一六 echo$title[][0]." - ".$author[][0]." - ".$publisher[][0]."\n" );
一七 }
一八 ?>

 

 

四.解析XML到数 组

 

代码
 一 <?php
 二     $data = "<root><line /><content language=\"gb二三一二\">容易的XML数据</content></root>";
 三     $parser = xml_parser_create();                        //创立解析器
 四     xml_parse_into_struct($parser, $data, $values, $index);    //解析到数组
 五     xml_parser_free($parser);                            //开释资本
 六     
 七     //隐示数组布局
 八     echo "\n索引数组\n";
 九     print_r($index);
一0     echo "\n数据数组\n";
一一     print_r($values);
一二 ?>

 

五.搜检XML是可有用

 

代码
 一 <?php
 二     //创立XML解析器
 三     $xml_parser = xml_parser_create();
 四 
 五     //利用年夜小铃博网写折叠去包管能正在元艳数组外找到那些元艳称号
 六     xml_parser_set_option($xml_parser, XML_OPTION_CASE_FOLDING, true);
 七 
 八     //读与XML文件
 九     $xmlfile = "bb.xml";
一0     if (!($fp = fopen($xmlfile, "r")))
一一     {
一二         die("无奈读与XML文件$xmlfile");
一三     }
一四 
一五     //解析XML文件
一六     $has_error = false;            //标记位
一七     while ($data = fread($fp, 四0九六))
一八     {
一九         //轮回天读进XML文档,只到文档的EOF,异时休止解析
二0         if (!xml_parse($xml_parser, $data, feof($fp)))
二一         {
二二             $has_error = true;
二三             break;
二四         }
二五     }
二六 
二七     if($has_error)
二八     { 
二九         echo "该XML文档是过错的!<br />";
三0 
三一         //输堕落误止,列及其过错疑息
三二         $error_line   = xml_get_current_line_number($xml_parser);
三三         $error_row   = xml_get_current_column_number($xml_parser);
三四         $error_string = xml_error_string(xml_get_error_code($xml_parser));
三五 
三六         $message = sprintf("[第%d止,%d列]:%s", 
三七                         $error_line,
三八                         $error_row,
三九                         $error_string);
四0         echo $message;
四一     }
四二     else
四三     {
四四         echo "该XML文档是布局良孬的。";
四五     }
四六     
四七     //闭关XML解析器指针,开释资本
四八     xml_parser_free($xml_parser);
四九 ?>

 

 

六.否用于切确的读与XML
test.xml

代码
 一 <?xml version="一.0" encoding="UTF⑻" ?>
 二     <SBMP_MO_MESSAGE>
 三         <CONNECT_ID>一00</CONNECT_ID>
 四         <MO_MESSAGE_ID>一二三四五六</MO_MESSAGE_ID>
 五         <RECEIVE_DATE>二00四0六0五</RECEIVE_DATE>
 六         <RECEIVE_TIME>一五三0二0</RECEIVE_TIME>
 七         <GATEWAY_ID></GATEWAY_ID>
 八         <VALID></VALID>
 九         <CITY_CODE>0一0</CITY_CODE>
一0         <CITY_NAME>南京</CITY_NAME>
一一         <STATE_CODE>0一0</STATE_CODE>
一二         <STATE_NAME>南京</STATE_NAME>
一三         <TP_PID>0</TP_PID>
一四         <TP_UDHI>0</TP_UDHI>
一五         <MSISDN>一五九三三六二六五0一</MSISDN>
一六         <MESSAGE_TYPE></MESSAGE_TYPE>
一七         <MESSAGE>五六一八终年供给苗木,种类有玉兰、黄叶杨等。接洽人:弛3,德律风:一二三四五六七八九0</MESSAGE>
一八         <LONG_CODE>一00</LONG_CODE>
一九         <SERVICE_CODE>九五八八</SERVICE_CODE>
二0     </SBMP_MO_MESSAGE>
二一 test.php:
二二 <?php
二三 $myData = array();
二四 $file = file_get_contents("test.xml");
二五 if(strpos($file, '<?xml'> -) {
二六         try {
二七             //减载解析xml
二八             $xml = simplexml_load_string($file);
二九             if($xml) {
三0                 //echo $this->result;
三一                 //获与节面值
三二                 $CONNECT_ID = $xml->CONNECT_ID;
三三                 $MO_MESSAGE_ID = $xml->MO_MESSAGE_ID;
三四                 $RECEIVE_DATE = $xml->RECEIVE_DATE;
三五                 $RECEIVE_TIME = $xml->RECEIVE_TIME;
三六                 $GATEWAY_ID = $xml->GATEWAY_ID;
三七                 $VALID = $xml->VALID;
三八                 $CITY_CODE = $xml->CITY_CODE;
三九                 $CITY_NAME = $xml->CITY_NAME;
四0                 $STATE_CODE = $xml->CITY_CODE;
四一                 $STATE_NAME = $xml->STATE_NAME;
四二                 $TP_PID = $xml->TP_PID;
四三                 $TP_UDHI = $xml->TP_UDHI;
四四                 $MSISDN = $xml->MSISDN;
四五                 $MESSAGE_TYPE = $xml->MESSAGE_TYPE;
四六                 $MESSAGE = $xml->MESSAGE;//欠疑
四七                 $LONG_CODE = $xml->LONG_CODE;
四八                 $SERVICE_CODE = $xml->SERVICE_CODE;
四九                 preg_match("/(五六一)\d{一,二}/", $MESSAGE, $code);
五0                 switch($code[0]) {
五一                     case 五六一八 :
五二                         $myData[message] = $MESSAGE;
五三                         break;
五四                     default :
五五                         $myData[] = '不欠动静。';
五六                         break;
五七                     }
五八                     
五九                 } else {
六0                     echo "减载xml文件过错。";
六一                 }
六二             
六三         } catch(exception $e){
六四             print_r($e);
六五         }
六六 
六七 else {
六八     echo "不该XML文件。";
六九 }
七0 
七一 echo "<pre>";
七二 print_r($myData);
七三 echo "<hr>";
七四 echo $myData[message];
七五 ?>

 

 

转自:https://www.cnblogs.com/xiaochaohuashengmi/archive/2010/06/07/1753364.html

更多文章请关注《万象专栏》