PHP での XML アプリケーション開発の基本 ノードの追加 ノードの削除 ノードのクエリ セクションのクエリ_PHP チュートリアル
php
xml
1つ
消去
スケーラブル
ベース
アプリ
開発する
お問い合わせ
マーク
に追加
の
導入
ノード
1. XML の概要
XML (Extensible Markup Language) は W3C 標準であり、主に Web アプリケーションとサーバー間の簡単な対話、データの保存、使用に使用されます。
XML標準を使用してエンコードされたデータは、人間やコンピューターが容易に解釈できる意味と構造を持っています。 XML データはプラットフォームやアプリケーションに依存しません。言うまでもなく、このこと自体が XML をインターネットにとって理想的なデータ交換形式にしています (実際、XML はまさにこの目的のために開発されました)。最近、ブロードバンド接続の成長と、あらゆる媒体でデータを共有するアプリケーションに対する消費者の需要により、XML Web サービスとアプリケーションがますますリッチになってきています。
XML は、まさにインターネット上の豊富なデータを記述するという組織上の問題を解決するために発明されました。これまでのところ、この問題は HTML を賢く使用することで部分的にしか解決できません。
以下は XML ドキュメントの例です:
プログラム コード
コードをコピーします コードは次のとおりです:
<名前>/名前> <アイテム>ボンベイミックス
;ゲスト>
これまで XML を見たことがない場合は、HTML に似ていると考えることができます。 HTML は SGML アプリケーションであり、XML はそのサブセットです。ただし、類似点には、類似したラベル区切り文字があることも含まれます。
上記の XML スニペットを見るだけで、データが多数のゲストを含むパーティーを記述しており、各ゲストが項目に対応していることがわかります。データを説明するために使用されるラベル名はすべて作成者によって選択されます。すべての XML 標準では、データに一貫性があり、データの記述に使用されるタグが適切な形式である必要があります。文書型宣言 (DTD) または XML スキーマを使用して、データの整合性をさらに強化できます。ただし、簡単にするために、この記事ではプレーン XML のみを使用します。
2. XML アプリケーション
ここまで、XML を使用してあらゆる種類のデータを記述する方法を見てきました。実際、XML は現在、多くの Web アプリケーションで広く使用されています。有名なアプリケーションの説明をいくつか示します。
· XHTML - これは最も広く使用されている XML アプリケーションの 1 つです。これは HTML に基づく SGML に似ており、Web ページ上でデータがどのように表示されるかを記述するために使用されます。 XHTML は DTD を使用して、すべてのドキュメントが標準に準拠していることを確認します。 XHTML の登場により、Web プログラマにとって開発は若干容易になりましたが、CSS および XHTML 標準と完全に互換性のある Web ブラウザはまだ登場していません。
・ RSS - Really Simple Syndication/Rich Site Summary は、特別なアプリケーション (アグリゲーター サーバー) を使用して Web サイトのコンテンツ (ニュース、記事、株価、リンクなど) を集約するために使用される方法です。ユーザーの PC 上の RSS フィードバック。この RSS データは XML を使用してエンコードされて送信されます。
・AJAX - 非同期 JavaScript と XML を使用すると、Web 開発者は Web ブラウザーで実行される機能豊富なイベント駆動型 Web アプリケーションを作成できます。このうち JavaScript は、XML エンコードされたデータをサーバー側スクリプトに送信する (またはサーバー側から XML エンコードされたデータを受信する) ために使用され、すべてのページ コンテンツを更新せずに部分的なリアルタイム ページ更新を可能にします。
上記は、XML の可能な応用例のほんの一部です。今後の記事では、これらのアプリケーションを PHP で使用する方法を分析します。
3. PHP での XML の使用
PHP 5.0 以降、PHP が XML と対話するために利用できるオプションが大幅に増加しました。 PHP バージョン 4 が提供できるのは、不安定で w3c と互換性のない DOM XML 拡張機能です。
以下では、XML との対話を可能にする PHP 5 によって提供される 3 つのメソッド (DOM、シンプル XML、XPath) に焦点を当てます。可能な場合は、それぞれのアプローチに最適な条件とデータを提案します。すべてのサンプル コードでは、XML データ ソースを使用して、図書館とそこに含まれる書籍を記述します。
プログラムコード
コードをコピー
コードは次のとおりです:
<著者>ジョージ・シュロスナグル著者>
<著者>エリック・ストロー著者>
<著者>ジョン・ズコウスキー著者>
書籍>
ライブラリ>
四、DOM
DOM PHP 拡張名は、W3C DOM API を使用した XML 文書上の操作を許可します。PHP 5 が登場する前では、これは PHP が XML 文書を取得できる唯一の方法です。 DOM が使用されているため、これらのオブジェクト モデルは同様であると認識されています。 W3C 互換のオブジェクト モデルの API と互換性があります。
次のサンプルコードでは、DOM を使用してそれぞれの情報を表示します。その後、各本の簡単な説明を示します:
PHP:
复制コード次のように:
/*ここでは XML バージョンを指定する必要があります: 1.0 です */
$xml = new DomDocument('1.0')
$xml->load('xml/library.xml'); ;
/*まずディレクトリリストを作成します*/
$categories = array();
$xml->getElementsByTagName('categories')->item(0); ;getElementsByTagName('category') as $categoryNode) {
/*属性の取得方法に注意してください*/
$cid = $categoryNode->getAttribute('cid')
$categories[$cid] = $categoryNode - >firstChild->nodeValue;
;?
php foreach($xml->getElementsBytagName('book') as $book):
/*タイトルを検索*/
$title = $book->getElementsByTagName('title')->item(0) - >firstChild->nodeValue;
/*著者を見つける - 簡単にするために、著者は 1 人だけであると仮定します*/
$author = $book->getElementsByTagName('author')->item(0)- >firstChild->nodeValue;
/* ディレクトリのリスト */
$bookCategories = $book->getElementsByTagName('category');
foreach($bookCategories as $category) {
$ catList .= $categories[$category->firstChild->nodeValue] ', ';
$catList, 0, -2) ?> h2>
?>
/*ここでは XML バージョンを指定する必要があります: 1.0 です */
$xml = new DomDocument('1.0')
$xml->load('xml/library.xml'); ;
/*まずディレクトリリストを作成します*/
$categories = array();
$xml->getElementsByTagName('categories')->item(0); ;getElementsByTagName('category') as $categoryNode) {
/*属性の取得方法に注意してください*/
$cid = $categoryNode->getAttribute('cid')
$categories[$cid] = $categoryNode - >firstChild->nodeValue;
;?
php foreach($xml->getElementsBytagName('book') as $book):
/*タイトルを検索*/
$title = $book->getElementsByTagName('title')->item(0) - >firstChild->nodeValue;
/*著者を見つける - 簡単にするために、著者は 1 人だけであると仮定します*/
$author = $book->getElementsByTagName('author')->item(0)- >firstChild->nodeValue;
/* ディレクトリのリスト */
$bookCategories = $book->getElementsByTagName('category');
foreach($bookCategories as $category) {
$ catList .= $categories[$category->firstChild->nodeValue] ', ';
$catList, 0, -2) ?> h2>
著者:: < /p>
カテゴリ: :