Inhaltsverzeichnis
books.xml-Datei:
Heim Backend-Entwicklung PHP-Tutorial Beispielcode für die PHP-Methode zum Lesen von XML-Dateien

Beispielcode für die PHP-Methode zum Lesen von XML-Dateien

Mar 21, 2017 am 09:42 AM

Das Beispiel in diesem Artikel fasst zusammen, wie PHP Dateien im XML-Format liest. Geben Sie es wie folgt als Referenz an alle weiter:

books.xml-Datei:

<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>
Nach dem Login kopieren
  1. DOMDocument-Methode

<?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>";
}
?>
Nach dem Login kopieren

2. Verwenden Sie den SAX-Parser, um XML zu lesen:

<?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";
}
?>
Nach dem Login kopieren

3. Verwenden Sie regulären Ausdruck, um XML zu analysieren:

<?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" );
}
?>
Nach dem Login kopieren

4 .XML in Array

<?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);
?>
Nach dem Login kopieren

5. prüfen, ob XML gültig ist

<?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);
?>
Nach dem Login kopieren

6 > test.xml

test.php:
<?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>
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonBeispielcode für die PHP-Methode zum Lesen von XML-Dateien. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße Artikel -Tags

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

PHP 8.4 Installations- und Upgrade-Anleitung für Ubuntu und Debian PHP 8.4 Installations- und Upgrade-Anleitung für Ubuntu und Debian Dec 24, 2024 pm 04:42 PM

PHP 8.4 Installations- und Upgrade-Anleitung für Ubuntu und Debian

CakePHP Datum und Uhrzeit CakePHP Datum und Uhrzeit Sep 10, 2024 pm 05:27 PM

CakePHP Datum und Uhrzeit

CakePHP-Projektkonfiguration CakePHP-Projektkonfiguration Sep 10, 2024 pm 05:25 PM

CakePHP-Projektkonfiguration

CakePHP-Datei hochladen CakePHP-Datei hochladen Sep 10, 2024 pm 05:27 PM

CakePHP-Datei hochladen

CakePHP-Routing CakePHP-Routing Sep 10, 2024 pm 05:25 PM

CakePHP-Routing

Besprechen Sie CakePHP Besprechen Sie CakePHP Sep 10, 2024 pm 05:28 PM

Besprechen Sie CakePHP

CakePHP-Kurzanleitung CakePHP-Kurzanleitung Sep 10, 2024 pm 05:27 PM

CakePHP-Kurzanleitung

So richten Sie Visual Studio-Code (VS-Code) für die PHP-Entwicklung ein So richten Sie Visual Studio-Code (VS-Code) für die PHP-Entwicklung ein Dec 20, 2024 am 11:31 AM

So richten Sie Visual Studio-Code (VS-Code) für die PHP-Entwicklung ein

See all articles