<🎜; >
xml ドキュメントと XML 文字列を解析する
XML ドキュメント/////////////////////////////////////////////// //// /////
var xmlDoc=null;
//IE ブラウザをサポート
if(window.ActiveXObject){
xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
}
//Mozilla ブラウザをサポートします
else if(document.implementation && document.implementation.createDocument){
xmlDoc = document.implementation.createDocument('','',null); 🎜> }
else{
alert("here");
}
if(xmlDoc!=null){
xmlDoc.async = false; house.xml");
}
//IE と Firefox ではパーサーが異なるだけでなく、解析プロセスも異なります。以下のように、
//つまり XML ドキュメントを解析します
//alert(xmlDoc.getElementsByTagName("address")[0].childNodes[0].childNodes[0].childNodes[0].nodeValue);/ / 150 万をポップアップします
//alert(xmlDoc.getElementsByTagName("address")[0].childNodes[0].childNodes[1].childNodes[0].nodeValue);// 1 つの寝室と 3 つの寝室をポップアップしますベッドルーム
// childNodes[1] をトラバースして解析します
//alert(xmlDoc.childNodes[1].childNodes[1].childNodes[0].childNodes[0].nodeValue);// ポップアップ 2 million
//alert(xmlDoc.childNodes[1].childNodes[0].childNodes[0].childNodes[0].nodeValue); //150 万件のポップアップが表示されます
//alert(xmlDoc.childNodes[ 1].childNodes[ 0].childNodes[1].childNodes[0].nodeValue);// 1 つの部屋と 3 つの寝室をポップアップします
// item(i) を使用してトラバースすることもできます
// var nodes=xmlDoc.documentElement.childNodes ;
//alert(nodes.item(0).childNodes.item(0).childNodes.item(0).text); //150 万件がポップアップします
/ /alert(nodes.item(0) .childNodes.item(1).childNodes.item(0).text); //1 つの部屋と 3 つの寝室をポップアップします
//Firefox は XML ドキュメントを解析します
// Firefox および IE は、さまざまなノードの XML を解析します。値には textContent を使用します。
//そして、いくつかの階層の子ノードの前後に「n」個の改行を追加します。 (理由はわかりません。firebug でデバッグするとこんな感じになるので、書いたコードをテストしてみるのが一番です。他の環境ではうまくいきません)
//つまり、最初のノードは "n" で、最初のノードは 2 つが実際の最初のノードです。
//3 番目のノードは "n"、4 番目のノードは実際の 2 番目のノードです。
//childNodes[0] をレイヤーごとに取得して解析します
//alert(xmlDoc.childNodes[0].childNodes[1].childNodes[1].textContent);//150 万をポップアップします
//alert(xmlDoc.childNodes[0].childNodes[1].childNodes[3].textContent);//3 ベッドルームのアパートメントをポップアップします
//ノード名の解決を直接取得します getElementsByTagName("address" )
//alert(xmlDoc.getElementsByTagName("address")[0].textContent);//1 ベッドルームの場合は 150 万、3 ベッドルームの場合は 200 万と 300 万のポップアップ
//alert(xmlDoc. getElementsByTagName("address")[0].childNodes [1].textContent);//1 つの部屋と 3 つの寝室で 150 万をポップアップ
//alert(xmlDoc.getElementsByTagName("address")[0].childNodes [1].childNodes[1].textContent);// 150 万件をポップアップします
//alert(xmlDoc.getElementsByTagName("address")[0].childNodes[1].childNodes[3].textContent); //1 つの部屋と 3 つの寝室をポップアップします
//alert(xmlDoc .getElementsByTagName("address")[0].childNodes[3].textContent);//200 万をポップアップします
//Firefox は次のこともできますitem(1) 関数を使用して、ノード "n" の前後にもいくつかの階層ノードが追加されることに注意してください。
//最初のノードは item(1)、2 番目のノードは item(3)、3 番目のノードは item(5)
//item(1) 関数走査分析
/ /var nodes=xmlDoc.documentElement.childNodes;
//alert(nodes.item(1).textContent); //150 万の 1 ベッドルーム、3 ベッドルームをポップアップします
//alert(nodes.item(1) ). childNodes.item(1).textContent); //150 万件のポップアップ
//alert(nodes.item(1).childNodes.item(3).textContent); //1 つのベッドルームと 3 つのベッドルーム
// XML 文字列を解析します /////////////////////////////////////////// /////// //////////////////////////
var str="
" "500,000価格>A6パターン>
"650,000価格>
" pattern>A8"
"170,000"
"";
//クロスブラウズ XML を解析するために IE と Firefox で使用されるパーサーは異なります。
var xmlStrDoc=null;
if (window.DOMParser){// Mozilla エクスプローラー
parser=new DOMParser();
xmlStrDoc=parser.parseFromString(str,"text/xml");
}else{// Internet Explorer
xmlStrDoc=new ActiveXObject("Microsoft.XMLDOM");
xmlStrDoc.loadXML(str);
//つまり XML 文字列を解析します
//alert(xmlStrDoc.getElementsByTagName("car")[0].childNodes[0].childNodes[0].childNodes[0].nodeValue);//ポップアップ500,000
//alert(xmlStrDoc.getElementsByTagName("car")[0].childNodes[0].childNodes[1].childNodes[0].nodeValue);//A6 をポップアップ
//大丈夫ですitem(i) を走査する
//var strNodes=xmlStrDoc.documentElement.childNodes;
//alert(strNodes.item(0).childNodes.item(0).childNodes.item(0).text ) ; // 500,000 をポップアップします
//alert(strNodes.item(0).childNodes.item(1).childNodes.item(0).text) // ポップアップ A6
//Firefox は XML を解析しますString
//Firefox と IE は、textContent を使用して XML 内のさまざまなノードの値を解析します。
//そして、いくつかの階層の子ノードの前後に「n」個の改行を追加します。
//言い換えると、最初のノードは "n" であり、2 番目のノードが実際の最初のノードです。
//3 番目のノードは "n"、4 番目のノードは実際の 2 番目のノードです。
//alert(xmlStrDoc.childNodes[0].childNodes[1].textContent);//650,000 A8 をポップアップ
//alert(xmlStrDoc.childNodes[0].childNodes[1].childNodes[1] ].textContent);//A8
//alert(xmlStrDoc.childNodes[0].childNodes[1].childNodes[0].textContent);//ポップアップ 650,000
//Firefox も item を使用できます(1) 関数トラバーサル。一部の階層ノードの前後にノード「n」が追加されていることに注意してください。
//最初のノードは item(1)、2 番目のノードは item(3)、3 番目のノードは item(5) です。
//var names=xmlStrDoc.documentElement.childNodes;
/ /alert(nodes.item(1).textContent); //ポップアップ 650,000 A8
//alert(nodes.item(1).childNodes.item(0).textContent); // ポップアップ 650,000 A8
//alert(nodes.item(1).childNodes.item(1).textContent); //ポップアップ A8
は各ノード レベルは最も厄介な問題です。正しいものが得られる限り、何度でも試すことができます。