XML ベースのアプリケーションを操作する場合、開発者は多くの場合、XML でエンコードされたデータ構造を作成する必要があります。たとえば、ユーザー入力に基づく Web の XML ステータス テンプレート、サーバー要求 XML ステートメント、実行時パラメーターに基づくクライアント応答などです。
XML データ構造の構築には時間がかかりますが、成熟した PHP DOM アプリケーション プログラミング インターフェイスを使用すれば、すべてがシンプルかつ明確になります。この記事では、PHP DOM アプリケーション インターフェイスの主な機能を紹介し、正しく完全な XML ファイルを生成してディスクに保存する方法を示します。
文書型宣言を作成する
一般に、XML 宣言は文書の先頭に配置されます。 PHP での宣言は非常に簡単です。DOM ドキュメント クラスのオブジェクトをインスタンス化し、それにバージョン番号を与えるだけです。番組リスト A を表示:
番組リスト A
コードをコピー コードは次のとおりです:
// doctype を作成します
$dom = new DOMDocument("1.0");
// ドキュメントをプレーン テキストとしてブラウザに表示します
// ドキュメントをブラウザにプレーン テキストとして表示します
//読みやすくするために
header("Content-Type: text/plain");
// ツリーを保存して表示します
echo $dom->saveXML();
ブラウザで出力を表示すると、次のコードが表示されます。
要素とテキスト ノードを追加します
の真に強力な機能です。 XML は、その要素とカプセル化からなるコンテンツです。幸いなことに、DOM ドキュメントを初期化すると、多くの操作が非常に簡単になります。このプロセスには、次の 2 つの手順が含まれます。
追加する要素またはテキスト ノードごとに、要素名またはテキスト コンテンツを介して DOM ドキュメント オブジェクトの createElement() メソッドまたは createTextNode() メソッドを呼び出します。これにより、要素またはテキスト ノードに対応する新しいオブジェクトが作成されます。
要素またはテキスト ノードを XML ドキュメント ツリーの親ノードに追加するには、ノードの appendChild() メソッドを呼び出し、前の手順で作成したオブジェクトを渡します。
次の例は、これら 2 つのステップを明確に示しています。リスト B を参照してください。
プログラムリスト B
コードをコピー コードは次のとおりです:
// create doctype
$dom = new DOMDocument("1.0");
// 読みやすさを目的として、ドキュメントをプレーン テキストとしてブラウザに表示します
// header("Content-Type: text/plain" );
// ルート要素を作成します
$root = $dom->createElement("toppings");
$dom->appendChild($root);
$item = $dom->createElement("item");
$root->appendChild($item);
// テキスト ノードを作成します
$text = $dom-> ;createTextNode( "pepperoni");
$item->appendChild($text);
echo $dom->saveXML()>;
ここでは、まず
コードは次のとおりです:
別のトッピングを追加したい場合は、リスト C に示すように、別の
プログラム リスト C
コードをコピー
コードは次のとおりです:
// create doctype $dom = new DOMDocument("1.0");
// 読みやすさを目的として、ドキュメントをプレーン テキストとしてブラウザに表示します// header("Content-Type: text/plain" );
// ルート要素を作成します
$root = $dom->createElement("toppings");
$dom->appendChild($root);
$item = $dom->createElement("item");
$root->appendChild($item);
// テキスト ノードを作成します
$text = $dom-> ;createTextNode( "pepperoni");
$item->appendChild($text);
$item = $dom->createElement("item"); >$root ->appendChild($item);
// 別のテキスト ノードを作成します
$text = $dom->createTextNode("Tomato");
$item->appendChild($) text);
// ツリーを保存して表示します
echo $dom->saveXML();
以下はプログラム リスト C を実行した後の出力です:
コードをコピーします コードは次のとおりです:
ペパロニアイテム>
トッピング> ;
属性を使用すると、要素に適切な情報を追加することもできます。 PHP DOM API の場合、属性を追加するには 2 つの手順が必要です。まず、DOM ドキュメント オブジェクトの createAttribute() メソッドを使用して属性名を持つノードを作成し、次に属性値を持つ属性ノードにドキュメント ノードを追加します。詳細については、リスト D を参照してください。
プログラムリスト D
コードをコピー コードは次のとおりです:
// create doctype
$dom = new DOMDocument("1.0");
// 読みやすさを目的として、ドキュメントをプレーン テキストとしてブラウザに表示します
// header("Content-Type: text/plain" );
// ルート要素を作成します
$root = $dom->createElement("toppings");
$dom->appendChild($root);
$item = $dom->createElement("item");
$root->appendChild($item);
// テキスト ノードを作成します
$text = $dom-> ;createTextNode( "pepperoni");
$item->appendChild($text);
$price = $dom->createAttribute("price"); >$item ->appendChild($price);
// 属性値ノードを作成します
$priceValue = $dom->createTextNode("4");
$price->appendChild($) PriceValue);
// ツリーの保存と表示
echo $dom->saveXML();
?>
出力は次のとおりです。 🎜>
コードをコピーします
CDATA モジュールとプロセスの追加
ウィザードはあまり使用されませんが、DOM ドキュメント オブジェクトの createCDATASection() メソッドと createProcessingstruction() メソッドを呼び出すことにより、PHP API も CDATA とプロセス ウィザードを適切にサポートできます。プログラム リスト E を参照してください。
プログラムリスト E
コードは次のとおりです:
// create doctype // create doctype $dom = new DOMDocument("1.0"); // 読みやすさを目的として、ドキュメントをブラウザにプレーンテキストとして表示します
//header("Content -Type: text/plain");
// ルート要素を作成
$root = $dom->createElement("toppings");
$dom->appendChild($root);
/ / 子要素を作成します
$item = $dom->createElement("item");
$root->appendChild($item); // テキスト ノードを作成します
$text = $dom->createTextNode("pepperoni");
$item->appendChild($text);
// 属性ノードを作成します
$price = $dom->createAttribute( "price" );
$item->appendChild($price);
$priceValue = $dom->createTextNode("4"); Price-> ;appendChild($priceValue);
// CDATA セクションを作成
$cdata = $dom->createCDATASection(" 顧客はピザを 16 枚の正方形にスライスすることを要求しました "); $root->appendChild($cdata);
// PI を作成します
$pi = $dom->createProcessingstruct("pizza", "bake()"); appendChild($pi) ;
// ツリーの保存と表示
echo $dom->saveXML();
出力は次のとおりです。 🎜>
コードをコピーします
コードは次のとおりです。
ペパロニアイテム>
顧客はピザを16枚の正方形にスライスすることを要求しました
目標を達成したら、結果を保存できます。ファイルに保存するか、PHP 変数に保存します。結果は、ファイル名を指定して save() メソッドを呼び出してファイルに保存するか、saveXML() メソッドを呼び出して PHP 変数に保存できます。次の例 (プログラム リスト F) を参照してください。 プログラム リスト F
コードをコピーします
コードは次のとおりです:
// doctype を作成します
$dom = new DOMDocument("1.0");
// ルート要素を作成
$root = $dom->createElement("toppings");
$dom->appendChild($root);
$dom->formatOutput=true;
// 子要素を作成します
$item = $dom->createElement("item");
$root->appendChild($item);
// テキストノードを作成します
$text = $dom->createTextNode("pepperoni");
$item->appendChild($text);
// 属性ノードを作成
$price = $dom->createAttribute("price");
$item->appendChild($price);
// 属性値ノードを作成
$priceValue = $dom->createTextNode("4");
$price->appendChild($priceValue);
// CDATA セクションを作成
$cdata = $dom->createCDATASection(" お客様はピザを
16 個の正方形にスライスすることを要求しています ");
$root->appendChild($cdata);
// PI を作成します
$pi = $dom->createProcessingstruct("pizza", "bake()");
$root->appendChild($pi);
// ツリーをファイルに保存
$dom->save("order.xml");
// ツリーを文字列に保存
$order = $dom->save("order.xml");
?>
以下は実際の例であり、大家が試してみることができます。
代码如下:
$conn = mysql_connect('localhost', 'root', '123456') または die('接続できませんでした: ' . mysql_error()); mysql_select_db('vdigital', $conn) または die ('データベースを使用できません: ' .mysql_error()); $str = "SELECT id,username FROM `admin` GROUP BY `id` ORDER BY `id` ASC";
$result = mysql_query($str) または die("無効なクエリ: " . mysql_error());if($result)
{
$xmlDoc = new DOMDocument();
if(!file_exists("01.xml")){
$xmlstr = "メッセージ> ;";
$xmlDoc->loadXML($xmlstr);
$xmlDoc->save("01.xml");
}
else { $xmlDoc->load("01.xml");}
$Root = $xmlDoc->documentElement;
while ($arr = mysql_fetch_array($result)){
$node1 = $xmlDoc->createElement("id");
$text = $xmlDoc->createTextNode(iconv("GB2312","UTF-8",$arr["id"]));
$node1->appendChild($text);
$node2 = $xmlDoc->createElement("name");
$text2 = $xmlDoc->createTextNode(iconv("GB2312","UTF-8",$arr["username"]));
$node2->appendChild($text2);
$Root->appendChild($node1);
$Root->appendChild($node2);
$xmlDoc->save("01.xml");
}
}
mysql_close($conn);
?>
test.php(应用测试)
复制代
代码如下:
$xmlDoc = 新しい DOMDocument(); $xmlDoc->load("http://localhost/xml/xml.php"); $x=$xmlDoc->getElementsByTagName('name');
for ($i=0; $ilength-1; $i ){
if(strpos($x->item($i)->; nodeValue,"fang")!==false)
{
echo $x->item($i)->parentNode->childNodes->item(1)->nodeValue;
}
}
?>

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン

WebStorm Mac版
便利なJavaScript開発ツール

Dreamweaver Mac版
ビジュアル Web 開発ツール

SublimeText3 英語版
推奨: Win バージョン、コードプロンプトをサポート!

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ホットトピック









