Cet article présente principalement la méthode de lecture PHP des fichiers au format XML. Il résume et analyse les compétences opérationnelles de PHP pour lire, analyser, charger et parcourir les fichiers au format XML sous forme d'exemples. >
Les détails sont les suivants :fichier 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>
<?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; $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>"; } ?>
<?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; } function endElement( $parser, $name ) { global $g_elem; $g_elem = null; } function textData( $parser, $text ) { global $g_books, $g_elem; if ( $g_elem == 'AUTHOR' || $g_elem == 'PUBLISHER' || $g_elem == 'TITLE' ) { $g_books[ count( $g_books ) - 1 ][ $g_elem ] = $text; } } $parser = xml_parser_create(); xml_set_element_handler( $parser, "startElement", "endElement" ); xml_set_character_data_handler( $parser, "textData" ); $f = fopen( 'books.xml', 'r' ); while( $data = fread( $f, 4096 ) ) { xml_parse( $parser, $data ); } xml_parser_free( $parser ); foreach( $g_books as $book ) { echo $book['TITLE']." - ".$book['AUTHOR']." - "; echo $book['PUBLISHER']."\n"; } ?>
<?php $xml = ""; $f = fopen( 'books.xml', 'r' ); while( $data = fread( $f, 4096 ) ) { $xml .= $data; } fclose( $f ); preg_match_all( "/\<book\>(.*?)\<\/book\>/s", $xml, $bookblocks ); foreach( $bookblocks[1] 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[1][0]." - ".$author[1][0]." - ".$publisher[1][0]."\n" ); } ?>
<?php $data = "<root><line /><content language=\"gb2312\">简单的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); echo "\n数据数组\n"; print_r($values); ?>
<?php //创建XML解析器 $xml_parser = xml_parser_create(); //使用大小写折叠来保证能在元素数组中找到这些元素名称 xml_parser_set_option($xml_parser, XML_OPTION_CASE_FOLDING, true); //读取XML文件 $xmlfile = "bb.xml"; if (!($fp = fopen($xmlfile, "r"))) { die("无法读取XML文件$xmlfile"); } //解析XML文件 $has_error = false; //标志位 while ($data = fread($fp, 4096)) { //循环地读入XML文档,只到文档的EOF,同时停止解析 if (!xml_parse($xml_parser, $data, feof($fp))) { $has_error = true; break; } } if($has_error) { echo "该XML文档是错误的!<br />"; //输出错误行,列及其错误信息 $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); echo $message; } else { echo "该XML文档是结构良好的。"; } //关闭XML解析器指针,释放资源 xml_parser_free($xml_parser); ?>
<?xml version="1.0" encoding="UTF-8" ?> <SBMP_MO_MESSAGE> <CONNECT_ID>100</CONNECT_ID> <MO_MESSAGE_ID>123456</MO_MESSAGE_ID> <RECEIVE_DATE>20040605</RECEIVE_DATE> <RECEIVE_TIME>153020</RECEIVE_TIME> <GATEWAY_ID>1</GATEWAY_ID> <VALID>1</VALID> <CITY_CODE>010</CITY_CODE> <CITY_NAME>北京</CITY_NAME> <STATE_CODE>010</STATE_CODE> <STATE_NAME>北京</STATE_NAME> <TP_PID>0</TP_PID> <TP_UDHI>0</TP_UDHI> <MSISDN>15933626501</MSISDN> <MESSAGE_TYPE>8</MESSAGE_TYPE> <MESSAGE>5618常年供应苗木,品种有玉兰、黄叶杨等。联系人:张三,电话:1234567890。</MESSAGE> <LONG_CODE>100</LONG_CODE> <SERVICE_CODE>9588</SERVICE_CODE> </SBMP_MO_MESSAGE>
<?php $myData = array(); $file = file_get_contents("test.xml"); if(strpos($file, '<?xml') > -1) { try { //加载解析xml $xml = simplexml_load_string($file); if($xml) { //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; $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("/(561)\d{1,2}/", $MESSAGE, $code); switch($code[0]) { case 5618 : $myData[message] = $MESSAGE; break; default : $myData[] = '没有短消息。'; break; } } else { echo "加载xml文件错误。"; } } catch(exception $e){ print_r($e); } } else { echo "没有该XML文件。"; } echo "<pre class="brush:php;toolbar:false">"; print_r($myData); echo "<hr>"; echo $myData[message]; ?>
Implémentation PHP de la méthode de lecture des fichiers XML
Résumé des exemples de méthodes courantes permettant à php de lire les compétences XML_php
Méthode d'analyse jQuery pour lire des fichiers XML (avec code)
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!