コードをコピーします コードは次のとおりです:
// DOM を使用して XML を読み取ります
$doc = new DOMDocument()
$doc->load('test.xml'); = $doc ->getElementsByTagName(“本”);
foreach( $books as $book ){
$authors = $book->getElementsByTagName(“著者”);
$author = $authors->item( 0)- >nodeValue; // nodeValue 属性は、ノードのタイプに応じてノードの値を設定または返すことができます。
$publishers = $book->getElementsByTagName(“publisher”);
$publisher = $publishers->item(0)->nodeValue;
$titles = $book->getElementsByTagName( ”title” );
$title = $titles->item(0)->nodeValue;
echo ''タイトル: $title
著者: $author
br>”;
}
/*
スクリプトはまず新しい DOMdocument オブジェクトを作成し、load メソッドを使用してこのオブジェクトに書籍 XML をロードします。その後、スクリプトは getElementsByName メソッドを使用して、指定された名前の下にあるすべての要素のリストを取得します。
book ノードのループで、スクリプトは getElementsByName メソッドを使用して、著者、発行者、およびタイトル タグのノード値を取得します。 nodeValue はノード内のテキストです。次に、スクリプトはこれらの値を表示します。
*/
コードをコピー コードは次のとおりです:
// SAX パーサーで XML を読み取ります
$g_books = array();
function startElement( $parser, $name; , $attrs ){
global $g_books, $g_elem;
if ( $name == 'BOOK' ) $g_books []= array();
$g_elem = $name;
function endElement( $parser, $名前){
グローバル $g_elem;
$g_elem = null;
関数 textData( $parser, $text ){
グローバル $g_books, $g_elem; = '出版社' || $g_elem == 'タイトル' ){
$g_books[ count( $g_books ) - 1 ][ $g_elem ] = $text;
}
}
$parser = xml_parser_create(); $ parser, ”startElement”, ”endElement” );
xml_set_character_data_handler( $parser, ”textData” )
$f = fopen( 'test.xml', 'r' ); , 4096 ) ){
xml_parse( $parser, $data );
}
xml_parser_free( $parser );
foreach( $g_books as $book ){
echo $book['TITLE']." - ".$book [ 'AUTHOR']." - ";
echo $book['PUBLISHER']."n";
}
/*
スクリプトは最初に、すべての書籍と書籍情報をメモリ内に保持する g_books 配列を設定します。 g_elem 変数 現在スクリプトによって処理されているタグの名前を保存します。次に、スクリプトはコールバック関数を定義します。この例では、コールバック関数は startElement、endElement、および textData です。マークを開くときと閉じるときは、それぞれ startElement 関数と endElement 関数を呼び出します。開始タグと終了タグの間のテキストで textData を呼び出します。
この例では、startElement タグは book 配列内の新しい要素を開始する book タグを探します。次に、textData 関数は現在の要素を調べて、それが発行者、タイトル、または著者タグであるかどうかを確認します。そうである場合、関数は現在のテキストを現在のブックに挿入します。
解析を続行できるようにするために、スクリプトは xml_parser_create 関数を使用してパーサーを作成します。次に、コールバック ハンドルを設定します。その後、スクリプトはファイルを読み取り、ファイルのチャンクをパーサーに送信します。ファイルが読み取られた後、xml_parser_free 関数によってパーサーが削除されます。スクリプトの最後では、g_books 配列の内容が出力されます。
*/
// 正規表現を使用して XML を解析する
コードをコピーする
コードは次のとおりです。
$xml = ”” $f = fopen( 'test.xml', 'r'; ); while( $data = fread( $f, 4096 ) ) { $xml .= $data; } preg_match_all( ”/(.*?)foreach( $bookblocks[1] as $block ){
preg_match_all( "/
(.*?)/", $block, $author ) ;
preg_match_all( ”/
(.*?)/”, $block, $title );
preg_match_all( ”/
(.*?) Publisher>/ ", $block, $publisher );
echo( $title[1][0]." - ".$author[1][0]." - ". $publisher[1][0]. "n" );
}
/*
XML を読み取るために正規表現を使用することは決してお勧めしませんが、正規表現関数は常に使用できるため、これが最も互換性のある方法である場合があります。 XML の形式や構造を制御できないため、正規表現を使用してユーザーから XML を直接読み取らないでください。ユーザーから XML を読み取るには、常に DOM ライブラリまたは SAX パーサーを使用する必要があります。
*/
// DOM を使用して XML を作成します
コードをコピーします
コードは次のとおりです:
$books = array();
$books [] = array(
'title' => 'PHP Hacks',
'author' => 'ジャック・ヘリントン',
'出版社' => ”オライリー”
);
$books [] = array(
'title' => 'ポッドキャスティングハック',
'author' => 'ジャック・ヘリントン',
'出版社' => ”オライリー”
);
$doc = 新しい DOMDocument();
$doc->formatOutput = true;
$r = $doc->createElement( ”books” );
$doc->appendChild( $r );
foreach( $books as $book ){
$b = $doc->createElement( ”book” );
$author = $doc->createElement( ”著者” );
$author->appendChild( $doc->createTextNode( $book['author'] ) );
$b->appendChild( $author );
$title = $doc->createElement( ”title” );
$title->appendChild( $doc->createTextNode( $book['title'] ) );
$b->appendChild( $title );
$publisher = $doc->createElement( ”publisher” );
$publisher->appendChild( $doc->createTextNode( $book['publisher'] ) );
$b->appendChild( $publisher );
$r->appendChild( $b );
}
//echo $doc->saveXML();
/*
いくつかのサンプル イメージを使用してブックの数が組み込まれています。このデータはユーザーから取得することも、データ ソースから取得することもできます。次に、各ブックの著者、タイトル、出版社がポイントを作成し、各ブック ポイントにテキスト ポイントを追加します。ただし、DOM を使用して XML を作成できない場合は、次のようになりますか? php
PHP 编写xml
$books = 配列();
$books [] = array(
'title' => 'PHP Hacks',
'author' => 'ジャック・ヘリントン', '出版社' => ”オライリー” ); $books [] = array( 'title' => 'ポッドキャスティングハック',
'author' => 'ジャック・ヘリントン',
'出版社' => ”オライリー”
);
?>
foreach( $books as $book )
{
?>
<著者>
著者>
出版社>
本>
}
?>
書籍>
实例で使用される test.xml は次のとおりです:
复制番号
代网次のとおり:
<著者>ジャック・ヘリントン著者>
PHP ハック <出版社>オライリー出版社> 本> <著者>ジャック・ヘリントン著者>
ポッドキャスティングのハック <出版社>オライリー出版社>
本>
書籍>
http://www.bkjia.com/PHPjc/321604.html
www.bkjia.com
true
http://www.bkjia.com/PHPjc/321604.html
技術記事
構文例: // DOM を使用して XML を取得 $doc = new DOMDocument(); $doc-load('test.xml'); $books = $doc-getElementsByTagName(“本”); foreach( $books as $book ){ $aut...