ホームページ バックエンド開発 PHPチュートリアル PHP_PHP チュートリアルを使用した XML DOM の読み取りと書き込みのコード例

PHP_PHP チュートリアルを使用した XML DOM の読み取りと書き込みのコード例

Jul 21, 2016 pm 02:54 PM
doc dom domdocument new php xml コード そして 使用 書く 読む

// DOM を使用して XML を読み取る
$doc = new DOMDocument()
$doc->load(‘test.xml’);

$books = $doc->getElementsByTagName(“本”);

foreach( $books as $book ){

$authors = $book->getElementsByTagName(“author”);
$author = $authors->item(0)->nodeValue 属性は次のとおりです。ノードの値を設定または返すノードのタイプに従って決定されます。

$publisher = $book->getElementsByTagName(“publisher”);

$publisher = $publishers->item(0)->nodeValue;
$titles = $book->getElementsByTagName( ”title” );

$title = $titles->item(0)->nodeValue;

エコー「タイトル: $title <br> 著者: $author <br> 出版社: $publisher<br><hr><br>」
/*

スクリプトは最初に新しい DOMdocument オブジェクトを作成し、load メソッドを使用して書籍 XML をこのオブジェクトにロードします。その後、スクリプトは getElementsByName メソッドを使用して、指定された名前の下にあるすべての要素のリストを取得します。

book ノードのループで、スクリプトは getElementsByName メソッドを使用して、著者、発行者、およびタイトル タグのノード値を取得します。 nodeValue はノード内のテキストです。次に、スクリプトはこれらの値を表示します。
*/

// SAX パーサーで XML を読み取る

$g_books = 配列();
$g_elem = null;

function startElement( $parser, $name, $attrs ){

global $g_books, $g_elem;

if ( $name == 'BOOK' ) $g_books []= array(); }


関数 endElement( $parser, $name ){

グローバル $g_elem = null;

function textData( $parser, $text ){
global $g_books, $g_elem;
if ( $g_elem == '作者' || $g_elem == '出版社' || $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( 'test.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";
}

/*

スクリプトは最初に、メモリ内のすべての書籍と書籍情報を保持する 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; $f );

preg_match_all( ”/<book>(.*?)</book>/s”, $xml, $bookblocks );
foreach( $bookblocks[1] as $block ){
preg_match_all( ”/<author>(.*?)</author>/”, $block, $author ); ;(.*?)</title>/”, $block, $title );
preg_match_all( ”/<publisher>(.*?)</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' => 'ポッドキャスティングハック',
'著者' => 'ジャック・ヘリントン',
'出版社' => ”オライリー”
);

$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();

/*
いくつかの例の図を使用してブックの数が組み込まれています。このデータは、ユーザーから取得することも、データ パックから取得することもできます。次に、各本の著者、タイトル、出版社が作成され、各ブック ポイントがルート ポイント ブックに追加されます。作成された XML はすべて正しい形式です。ただし、DOM を使用して XML を作成できない場合、これは問題になりますか?

Xml代コード

<?php

PHP 编写xml

$books = array();

$books [] = array(

'title' => 'PHP Hacks',
'author' => 'ジャック・ヘリントン',
'出版社' => ”オライリー”
);
$books [] = array(
'title' => 'ポッドキャスティングハック',
'著者' => 'ジャック・ヘリントン',
'出版社' => ”オライリー”
);
?>

<?php

foreach( $books as $book )
{
?>

<title><?php echo( $book['title'] ); ?>
<著者><?php echo( $book['author'] ); ?>
</著者>
<publisher><?php echo( $book['publisher'] ); ?>
</出版社>
</本>
<?php
}
?>
</書籍>

例で使用される te​​st.xml は次のとおりです:

<?xml バージョン=”1.0″ エンコーディング=”utf8″?>


<著者>ジャック・ヘリントン</著者>
<title>PHP ハック - bkjia.com</title>
オライリー出版社>
</本>

<著者>ジャック・ヘリントン</著者>

<title>ポッドキャスティングのハック</title>
オライリー出版社>
</本>
</書籍>

http://www.bkjia.com/PHPjc/364615.html

本当http://www.bkjia.com/PHPjc/364615.html技術記事 // DOM を使用して XML を取得 $doc = new DOMDocument(); $doc-load(test.xml); $books = $doc-getElementsByTagName(book); foreach( $books as $book ){ $authors = $book-getElementsByTagName(auth...
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットな記事タグ

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Dec 24, 2024 pm 04:42 PM

Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド

CakePHP の日付と時刻 CakePHP の日付と時刻 Sep 10, 2024 pm 05:27 PM

CakePHP の日付と時刻

CakePHP プロジェクトの構成 CakePHP プロジェクトの構成 Sep 10, 2024 pm 05:25 PM

CakePHP プロジェクトの構成

CakePHP ファイルのアップロード CakePHP ファイルのアップロード Sep 10, 2024 pm 05:27 PM

CakePHP ファイルのアップロード

CakePHP ルーティング CakePHP ルーティング Sep 10, 2024 pm 05:25 PM

CakePHP ルーティング

CakePHP について話し合う CakePHP について話し合う Sep 10, 2024 pm 05:28 PM

CakePHP について話し合う

CakePHP クイックガイド CakePHP クイックガイド Sep 10, 2024 pm 05:27 PM

CakePHP クイックガイド

PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 Dec 20, 2024 am 11:31 AM

PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法

See all articles