Dom-xml-dom-loading

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

XML DOM-読み込み

この章では、XML _Loading_および_Parsing_について学習します。

APIによって提供されるインターフェイスを記述するために、W3Cはインターフェイス定義言語(IDL)と呼ばれる抽象言語を使用します。 IDLを使用する利点は、開発者がお気に入りの言語でDOMを使用する方法を学習し、別の言語に簡単に切り替えることができることです。

欠点は、抽象的であるため、IDLをWeb開発者が直接使用できないことです。 プログラミング言語には違いがあるため、抽象インターフェースとその具体的な言語との間のマッピング(またはバインディング)が必要です。 DOMは、Javascript、JScript、Java、C、C ++、PLSQL、Python、Perlなどのプログラミング言語にマッピングされています。

'_以下のセクションと章では、XMLファイルをロードするためのプログラミング言語としてJavascriptを使用します。_

パーサ

_parser_は、ドキュメント(この場合はXMLドキュメント)を分析し、その情報に対して特定の処理を行うように設計されたソフトウェアアプリケーションです。 DOMベースのパーサーのいくつかは、次の表に記載されています-

S.No Parser & Description
1

JAXP

Sun MicrosystemのXML解析用Java API(JAXP)

2

XML4J

IBMのXML Parser for Java(XML4J)

3

msxml

MicrosoftのXMLパーサー(msxml)バージョン2.0はInternet Explorer 5.5に組み込まれています

4

4DOM

4DOMはPythonプログラミング言語のパーサーです

5

XML::DOM

XML
DOMは、Perlを使用してXMLドキュメントを操作するPerlモジュールです
6

Xerces

ApacheのXerces Javaパーサー

DOMのようなツリーベースのAPIでは、パーサーはXMLファイルを走査し、対応するDOMオブジェクトを作成します。 その後、DOM構造を行き来できます。

XMLの読み込みと解析

XMLドキュメントの読み込み中、XMLコンテンツは2つの形式で提供されます-

  • XMLファイルとして直接
  • XML文字列として

XMLファイルとしてのコンテンツ

次の例は、XMLコンテンツがXMLファイルとして受信されたときに、AjaxとJavascriptを使用してXML(link:/dom/node.xml [node.xml])データをロードする方法を示しています。 ここで、Ajax関数はxmlファイルのコンテンツを取得し、XML DOMに保存します。 DOMオブジェクトが作成されると、解析されます。

<!DOCTYPE html>
<html>
   <body>
      <div>
         <b>FirstName:</b> <span id = "FirstName"></span><br>
         <b>LastName:</b> <span id = "LastName"></span><br>
         <b>ContactNo:</b> <span id = "ContactNo"></span><br>
         <b>Email:</b> <span id = "Email"></span>
      </div>
      <script>
        //if browser supports XMLHttpRequest

            if (window.XMLHttpRequest) {//Create an instance of XMLHttpRequest object.
               code for IE7+, Firefox, Chrome, Opera, Safari xmlhttp  =  new XMLHttpRequest();
            } else {//code for IE6, IE5
               xmlhttp  =  new ActiveXObject("Microsoft.XMLHTTP");
            }

        //sets and sends the request for calling "node.xml"
            xmlhttp.open("GET","/dom/node.xml",false);
            xmlhttp.send();

        //sets and returns the content as XML DOM
            xmlDoc = xmlhttp.responseXML;

        //parsing the DOM object
            document.getElementById("FirstName").innerHTML =
               xmlDoc.getElementsByTagName("FirstName")[0].childNodes[0].nodeValue;
            document.getElementById("LastName").innerHTML =
               xmlDoc.getElementsByTagName("LastName")[0].childNodes[0].nodeValue;
            document.getElementById("ContactNo").innerHTML =
               xmlDoc.getElementsByTagName("ContactNo")[0].childNodes[0].nodeValue;
            document.getElementById("Email").innerHTML =
               xmlDoc.getElementsByTagName("Email")[0].childNodes[0].nodeValue;
      </script>
   </body>
</html>

node.xml

<Company>
   <Employee category = "Technical" id = "firstelement">
      <FirstName>Tanmay</FirstName>
      <LastName>Patil</LastName>
      <ContactNo>1234567890</ContactNo>
      <Email>[email protected]</Email>
   </Employee>

   <Employee category = "Non-Technical">
      <FirstName>Taniya</FirstName>
      <LastName>Mishra</LastName>
      <ContactNo>1234667898</ContactNo>
      <Email>[email protected]</Email>
   </Employee>

   <Employee category = "Management">
      <FirstName>Tanisha</FirstName>
      <LastName>Sharma</LastName>
      <ContactNo>1234562350</ContactNo>
      <Email>[email protected]</Email>
   </Employee>
</Company>

コードの詳細のほとんどは、スクリプトコードにあります。

  • Internet Explorerは_ActiveXObject( "Microsoft.XMLHTTP")_を使用してXMLHttpRequestオブジェクトのインスタンスを作成し、他のブラウザーは_XMLHttpRequest()_メソッドを使用します。
  • _responseXML_は、XMLコンテンツをXML DOMで直接変換します。
  • XMLコンテンツがJavaScript XML DOMに変換されると、JS DOMのメソッドとプロパティを使用して任意のXML要素にアクセスできます。 childNodes _、 nodeValue_などのDOMプロパティと、getElementsById(ID)、getElementsByTagName(tags_name)などのDOMメソッドを使用しました。

実行

このファイルをloadingexamplelとして保存し、ブラウザで開きます。 次の出力が表示されます-

読み込みの例

XML文字列としてのコンテンツ

次の例は、XMLコンテンツがXMLファイルとして受信されたときにAjaxとJavascriptを使用してXMLデータをロードする方法を示しています。 ここで、Ajax関数は、xmlファイルのコンテンツを取得し、XML DOMに保存します。 DOMオブジェクトが作成されると、解析されます。

<!DOCTYPE html>
<html>
   <head>
      <script>

        //loads the xml string in a dom object
         function loadXMLString(t) {//for non IE browsers
            if (window.DOMParser) {
              //create an instance for xml dom object parser = new DOMParser();
               xmlDoc = parser.parseFromString(t,"text/xml");
            }
           //code for IE
            else {//create an instance for xml dom object
               xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
               xmlDoc.async = false;
               xmlDoc.loadXML(t);
            }
            return xmlDoc;
         }
      </script>
   </head>
   <body>
      <script>

        //a variable with the string
            var text = "<Employee>";
            text = text+"<FirstName>Tanmay</FirstName>";
            text = text+"<LastName>Patil</LastName>";
            text = text+"<ContactNo>1234567890</ContactNo>";
            text = text+"<Email>[email protected]</Email>";
            text = text+"</Employee>";

        //calls the loadXMLString() with "text" function and store the xml dom in a variable
            var xmlDoc = loadXMLString(text);

        //parsing the DOM object
            y = xmlDoc.documentElement.childNodes;
            for (i = 0;i<y.length;i++) {
               document.write(y[i].childNodes[0].nodeValue);
               document.write("<br>");
            }
      </script>
   </body>
</html>

コードの詳細のほとんどは、スクリプトコードにあります。

  • Internet Explorerは_ActiveXObject( "Microsoft.XMLDOM")_を使用してXMLデータをDOMオブジェクトにロードし、他のブラウザーは_DOMParser()_関数と_parseFromString(text、 'text/xml')_メソッドを使用します。
  • 変数_text_には、XMLコンテンツを含む文字列が含まれます。
  • XMLコンテンツがJavaScript XML DOMに変換されると、JS DOMのメソッドとプロパティを使用して任意のXML要素にアクセスできます。 childNodes _、 nodeValue_などのDOMプロパティを使用しました。

実行

このファイルをloadingexamplelとして保存し、ブラウザで開きます。 次の出力が表示されます-

読み込みの例

XMLコンテンツがJavaScript XML DOMに変換される方法を確認したので、XML DOMメソッドを使用して任意のXML要素にアクセスできるようになりました。