XML ファイルを読み取る PHP メソッドのコード例

黄舟
リリース: 2023-03-06 19:42:01
オリジナル
1492 人が閲覧しました

この記事の例では、PHPでXML形式のファイルを読み込む方法をまとめています。参考として、次のようにみんなと共有します:

books.xml ファイル:

<books>
<book>
<author>Jack Herrington</author>
<title>PHP Hacks</title>
<publisher>O&#39;Reilly</publisher>
</book>
<book>
<author>Jack Herrington</author>
<title>Podcasting Hacks</title>
<publisher>O&#39;Reilly</publisher>
</book>
</books>
ログイン後にコピー
  1. DOMDocument メソッド

<?php
$doc = new DOMDocument();
$doc->load( &#39;books.xml&#39; );
$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>";
}
?>
ログイン後にコピー

2. SAX パーサーを使用して XML を読み取ります:

正規表現

を使用します。 XML を解析します:

4. XML を

array に解析します

<?php
$xml = "";
$f = fopen( &#39;books.xml&#39;, &#39;r&#39; );
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" );
}
?>
ログイン後にコピー
6. XML を正確に読み取るために使用できます

test.xml

<?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);
?>
ログイン後にコピー

test.php:

<?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 ファイルを読み取る PHP メソッドのコード例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート