Php-and-xml

提供:Dev Guides
移動先:案内検索

PHPとXML

XMLは、HTMLによく似たマークアップ言語です。 XML文書はプレーンテキストであり、<と>で区切られたタグが含まれています。XMLとHTMLの間に2つの大きな違いがあります-

  • XMLは、使用する必要のある特定のタグセットを定義しません。
  • XMLはドキュメント構造について非常に気難しいです。

XMLは、HTMLよりもはるかに自由です。 HTMLには特定のタグセットがあります。<a> </a>タグはリンクを囲み、<p>は段落を開始します。 ただし、XMLドキュメントでは、任意のタグを使用できます。 映画のレーティングの周りに<rating> </rating>タグを置き、誰かの身長の周りに<height> </height>タグを置きます。 したがって、XMLは独自のタグを作成するオプションを提供します。

XMLは、ドキュメント構造に関して非常に厳格です。 HTMLを使用すると、開始タグと終了タグを使用して、高速でゆったりと再生できます。 しかし、これはXMLには当てはまりません。

有効なXMLではないHTMLリスト

<ul>
   <li>Braised Sea Cucumber
   <li>Baked Giblets with Salt
   <li>Abalone with Marrow and Duck Feet
</ul>

これは、3つの開始<li>タグと一致する終了</li>タグがないため、有効なXMLドキュメントではありません。 XMLドキュメントで開かれたタグはすべて閉じる必要があります。

有効なXMLであるHTMLリスト

<ul>
   <li>Braised Sea Cucumber</li>
   <li>Baked Giblets with Salt</li>
   <li>Abalone with Marrow and Duck Feet</li>
</ul>

XMLドキュメントの解析

PHP 5の新しい SimpleXML モジュールにより、XMLドキュメントの解析が非常に簡単になります。 XMLドキュメントを、XMLへの構造化されたアクセスを提供するオブジェクトに変換します。

文字列に保存されたXMLドキュメントからSimpleXMLオブジェクトを作成するには、文字列を* simplexml_load_string()*に渡します。 SimpleXMLオブジェクトを返します。

次の例を試してください-

<html>
   <body>

      <?php
         $note=<<<XML

         <note>
            <to>Gopal K Verma</to>
            <from>Sairamkrishna</from>
            <heading>Project submission</heading>
            <body>Please see clearly </body>
         </note>

         XML;
         $xml=simplexml_load_string($note);
         print_r($xml);
      ?>

   </body>
</html>

それは次の結果を生成します-

XMLの解析

-ファイルにXMLコンテンツがある場合、関数* simplexml_load_file(filename)*を使用できます。

XML解析関数の詳細については、リンク:/php/php_function_reference [PHP関数リファレンス]を確認してください。

XMLドキュメントの生成

SimpleXMLは既存のXMLドキュメントの解析には適していますが、新しいXMLドキュメントをゼロから作成することはできません。

XML文書を生成する最も簡単な方法は、構造がXML文書の構造を反映するPHP配列を構築し、配列を反復処理して、適切なフォーマットで各要素を印刷することです。

次の例を試してください-

<?php
   $channel = array('title' => "What's For Dinner",
      'link' => 'http://menu.example.com/',
      'description' => 'Choose what to eat tonight.');

   print "<channel>\n";

   foreach ($channel as $element => $content) {
      print " <$element>";
      print htmlentities($content);
      print "</$element>\n";
   }

   print "</channel>";
?>

それは次の結果を生成します-

http://menu.example.com/Choose what to eat tonight.