この記事では、PHPのXML解析メソッドを例の形で詳しく説明します。皆さんの参考に共有してください。具体的な分析は次のとおりです:
books.xml ファイルは次のとおりです:
?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
<書籍カテゴリ="子供向け"> <著者>J・K・ローリング著者> 2005年年> 29.99価格> 本> <書籍カテゴリ="料理"> <著者>ジャーダ・デ・ラウレンティス著者> 2005年年> 30.00価格> 本> <書籍カテゴリ="ウェブ" カバー="ペーパーバック"> <著者>エリック・T・レイ著者> 2003年年> 39.95価格> 本> 本屋> |
1. DOM の XML 解析
?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
//DOMDocument オブジェクトを作成します $doc=新しい DOMDocument(); //XML ファイルをロードする $doc->load("books.xml"); //すべての本のタグを取得します $bookDom=$doc->getElementsByTagName("book"); foreach($bookDom as $book){ $title = $book->getElementsByTagName("title")->item(0)->nodeValue; $author = $book->getElementsByTagName("author")->item(0)->nodeValue; $year = $book->getElementsByTagName("year")->item(0)->nodeValue; $price = $book->getElementsByTagName("price")->item(0)->nodeValue; echo "タイトル:".$title." echo "著者:".$author." echo "年:".$year." echo "価格:".$price ." エコー「****************************************** } ?> |
2.xml_parse_into_struct
パーサーを作成し、XML データを配列に解析し、パーサーを解放して、配列から目的の値を抽出します。
?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
//xml ファイルを読み込みます $file = "books.xml"; $data = file_get_contents($file); // パーサーを作成します $parser = xml_parser_create(); // XML データを配列に解析します xml_parse_into_struct($parser, $data, $vals, $index); // パーサーを解放します xml_parser_free($parser); //配列処理 $arr = 配列(); $t=0; foreach($vals as $value) { $type = $value['type']; $tag = $value['タグ']; $レベル = $value['レベル']; $attributes = isset($value['attributes'])?$value['attributes']:""; $val = isset($value['value'])?$value['value']:""; スイッチ ($type) { ケース「オープン」: if ($attributes != "" || $val != "") { $arr[$t]['tag'] = $tag; $arr[$t]['属性'] = $属性; $arr[$t]['レベル'] = $レベル; $t++; } 休憩; ケース「完了」: if ($attributes != "" || $val != "") { $arr[$t]['tag'] = $tag; $arr[$t]['属性'] = $属性; $arr[$t]['val'] = $val; $arr[$t]['レベル'] = $レベル; $t++; } 休憩; } } エコー「 」;</p> <p>print_r($arr);</p> <p>エコー ""; ?> |
3. SAX パーサーを使用して XML を読み取る-----XML Simple API (SAX) パーサー
?
1 2 3 4 5 6 7 |
$file="books.xml"; $xml = simplexml_load_file($file); エコー「 」;</p> <p>print_r($xml);</p> <p>エコー ""; ?> |
この記事が皆様の PHP プログラミング設計に役立つことを願っています。