ホームページ >ウェブフロントエンド >jsチュートリアル >js 解析 XML 文字列と XML ドキュメントの実装原則とコード (IE と Firefox 用)_JavaScript スキル

js 解析 XML 文字列と XML ドキュメントの実装原則とコード (IE と Firefox 用)_JavaScript スキル

WBOY
WBOYオリジナル
2016-05-16 17:42:24965ブラウズ

IE と Firefox の XML ドキュメントと XML 文字列をそれぞれ解析しました。一部の関数を確認したい場合は、コメントを削除してください。

ajax 環境での XML の解析に関しては、原理は実際には同じですが、ajax に配置されている場合でも、返された XML を解析する必要がある点が異なります。

コードをコピー コードは次のとおりです:

<🎜; >
<br><meta name="著者" content="lushuaiyin"< head> <br><body> <br>xml ドキュメントと XML 文字列を解析する <br></html> XML ドキュメント/////////////////////////////////////////////// //// ///// <br>var xmlDoc=null; <br>//IE ブラウザをサポート <br>if(window.ActiveXObject){ <br>xmlDoc=new ActiveXObject("Microsoft.XMLDOM"); <br> } <br>//Mozilla ブラウザをサポートします<br>else if(document.implementation && document.implementation.createDocument){ <br>xmlDoc = document.implementation.createDocument('','',null); 🎜> } <br>else{ <br>alert("here"); <br>} <br>if(xmlDoc!=null){ <br>xmlDoc.async = false; house.xml"); <br>} <br>//IE と Firefox ではパーサーが異なるだけでなく、解析プロセスも異なります。以下のように、<br>//つまり XML ドキュメントを解析します<br>//alert(xmlDoc.getElementsByTagName("address")[0].childNodes[0].childNodes[0].childNodes[0].nodeValue);/ / 150 万をポップアップします<br>//alert(xmlDoc.getElementsByTagName("address")[0].childNodes[0].childNodes[1].childNodes[0].nodeValue);// 1 つの寝室と 3 つの寝室をポップアップしますベッドルーム<br> // childNodes[1] をトラバースして解析します <br>//alert(xmlDoc.childNodes[1].childNodes[1].childNodes[0].childNodes[0].nodeValue);// ポップアップ 2 million <br> //alert(xmlDoc.childNodes[1].childNodes[0].childNodes[0].childNodes[0].nodeValue); //150 万件のポップアップが表示されます<br>//alert(xmlDoc.childNodes[ 1].childNodes[ 0].childNodes[1].childNodes[0].nodeValue);// 1 つの部屋と 3 つの寝室をポップアップします<br>// item(i) を使用してトラバースすることもできます<br>// var nodes=xmlDoc.documentElement.childNodes ; <br>//alert(nodes.item(0).childNodes.item(0).childNodes.item(0).text); //150 万件がポップアップします<br>/ /alert(nodes.item(0) .childNodes.item(1).childNodes.item(0).text); //1 つの部屋と 3 つの寝室をポップアップします<br>//Firefox は XML ドキュメントを解析します<br>// Firefox および IE は、さまざまなノードの XML を解析します。値には textContent を使用します。 <br>//そして、いくつかの階層の子ノードの前後に「n」個の改行を追加します。 (理由はわかりません。firebug でデバッグするとこんな感じになるので、書いたコードをテストしてみるのが一番です。他の環境ではうまくいきません) <br>//つまり、最初のノードは "n" で、最初のノードは 2 つが実際の最初のノードです。 <br>//3 番目のノードは "n"、4 番目のノードは実際の 2 番目のノードです。 <br>//childNodes[0] をレイヤーごとに取得して解析します <br>//alert(xmlDoc.childNodes[0].childNodes[1].childNodes[1].textContent);//150 万をポップアップします<br>//alert(xmlDoc.childNodes[0].childNodes[1].childNodes[3].textContent);//3 ベッドルームのアパートメントをポップアップします<br>//ノード名の解決を直接取得します getElementsByTagName("address" ) <br>//alert(xmlDoc.getElementsByTagName("address")[0].textContent);//1 ベッドルームの場合は 150 万、3 ベッドルームの場合は 200 万と 300 万のポップアップ <br>//alert(xmlDoc. getElementsByTagName("address")[0].childNodes [1].textContent);//1 つの部屋と 3 つの寝室で 150 万をポップアップ<br>//alert(xmlDoc.getElementsByTagName("address")[0].childNodes [1].childNodes[1].textContent);// 150 万件をポップアップします<br>//alert(xmlDoc.getElementsByTagName("address")[0].childNodes[1].childNodes[3].textContent); //1 つの部屋と 3 つの寝室をポップアップします<br>//alert(xmlDoc .getElementsByTagName("address")[0].childNodes[3].textContent);//200 万をポップアップします<br>//Firefox は次のこともできますitem(1) 関数を使用して、ノード "n" の前後にもいくつかの階層ノードが追加されることに注意してください。 <br>//最初のノードは item(1)、2 番目のノードは item(3)、3 番目のノードは item(5) <br>//item(1) 関数走査分析<br>/ /var nodes=xmlDoc.documentElement.childNodes; <br>//alert(nodes.item(1).textContent); //150 万の 1 ベッドルーム、3 ベッドルームをポップアップします <br>//alert(nodes.item(1) ). childNodes.item(1).textContent); //150 万件のポップアップ<br>//alert(nodes.item(1).childNodes.item(3).textContent); //1 つのベッドルームと 3 つのベッドルーム<br>// XML 文字列を解析します /////////////////////////////////////////// /////// ////////////////////////// <br>var str="<car>" "500,000価格>A6パターン><br>"650,000価格><br>" pattern>A8</pattern></brand>" <br>"<brand><price>170,000</price></brand>" <br>"</car>"; <BR>//クロスブラウズ XML を解析するために IE と Firefox で使用されるパーサーは異なります。<BR>var xmlStrDoc=null; <BR>if (window.DOMParser){// Mozilla エクスプローラー <BR>parser=new DOMParser(); <BR>xmlStrDoc=parser.parseFromString(str,"text/xml"); <BR>}else{// Internet Explorer <BR>xmlStrDoc=new ActiveXObject("Microsoft.XMLDOM"); <BR>xmlStrDoc.loadXML(str); <BR>//つまり XML 文字列を解析します<BR>//alert(xmlStrDoc.getElementsByTagName("car")[0].childNodes[0].childNodes[0].childNodes[0].nodeValue);//ポップアップ500,000<BR>//alert(xmlStrDoc.getElementsByTagName("car")[0].childNodes[0].childNodes[1].childNodes[0].nodeValue);//A6 をポップアップ <BR>//大丈夫ですitem(i) を走査する <BR>//var strNodes=xmlStrDoc.documentElement.childNodes; <BR>//alert(strNodes.item(0).childNodes.item(0).childNodes.item(0).text ) ; // 500,000 をポップアップします <BR>//alert(strNodes.item(0).childNodes.item(1).childNodes.item(0).text) // ポップアップ A6 <BR>//Firefox は XML を解析しますString <BR>//Firefox と IE は、textContent を使用して XML 内のさまざまなノードの値を解析します。 <BR>//そして、いくつかの階層の子ノードの前後に「n」個の改行を追加します。 <BR>//言い換えると、最初のノードは "n" であり、2 番目のノードが実際の最初のノードです。 <BR>//3 番目のノードは "n"、4 番目のノードは実際の 2 番目のノードです。 <BR>//alert(xmlStrDoc.childNodes[0].childNodes[1].textContent);//650,000 A8 をポップアップ <BR>//alert(xmlStrDoc.childNodes[0].childNodes[1].childNodes[1] ].textContent);//A8 <BR>//alert(xmlStrDoc.childNodes[0].childNodes[1].childNodes[0].textContent);//ポップアップ 650,000<BR>//Firefox も item を使用できます(1) 関数トラバーサル。一部の階層ノードの前後にノード「n」が追加されていることに注意してください。 <BR>//最初のノードは item(1)、2 番目のノードは item(3)、3 番目のノードは item(5) です。 <BR>//var names=xmlStrDoc.documentElement.childNodes; <BR>/ /alert(nodes.item(1).textContent); //ポップアップ 650,000 A8 <BR>//alert(nodes.item(1).childNodes.item(0).textContent); // ポップアップ 650,000 A8 <BR>//alert(nodes.item(1).childNodes.item(1).textContent); //ポップアップ A8 <BR></script> <br><br> <br> は各ノード レベルは最も厄介な問題です。正しいものが得られる限り、何度でも試すことができます。</price> </div> ノードの階層関係を簡単に判断したり、デバッグしたりできます。 <br><br><br>この点に関しては、json を読んで理解するのが良いと感じます。この解析は手間がかかりすぎます<br> <strong></strong><br><div class="codetitle"> <span>コードをコピー<a style="CURSOR: pointer" data="17395" class="copybut" id="copybut17395" onclick="doCopy('code17395')"><u></u> コードは次のとおりです:</a></span> </div>< ;?xml バージョン = "1.0" エンコーディング = "utf-8" ?> <div class="codebody" id="code17395"><住所> <br><価格>150万</価格> ; <br><type>1 ベッドルーム </city> <br><city name="上海"> ; <br></都市> <br><価格</価格> <br></都市> ="南京"><br><br> </div></div><div class="nphpQianMsg"><div class="clear"></div></div><div class="nphpQianSheng"><span>声明:</span><div>この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。</div></div></div><div class="nphpSytBox"><span>前の記事:<a class="dBlack" title="jquery select は選択内容を動的に読み込みます (さまざまなブラウザーと互換性があります)_jquery" href="https://m.php.cn/ja/faq/17961.html">jquery select は選択内容を動的に読み込みます (さまざまなブラウザーと互換性があります)_jquery</a></span><span>次の記事:<a class="dBlack" title="jquery select は選択内容を動的に読み込みます (さまざまなブラウザーと互換性があります)_jquery" href="https://m.php.cn/ja/faq/17963.html">jquery select は選択内容を動的に読み込みます (さまざまなブラウザーと互換性があります)_jquery</a></span></div><div class="nphpSytBox2"><div class="nphpZbktTitle"><h2>関連記事</h2><em><a href="https://m.php.cn/ja/article.html" class="bBlack"><i>続きを見る</i><b></b></a></em><div class="clear"></div></div><ins class="adsbygoogle" style="display:block" data-ad-format="fluid" data-ad-layout-key="-6t+ed+2i-1n-4w" data-ad-client="ca-pub-5902227090019525" data-ad-slot="8966999616"></ins><script> (adsbygoogle = window.adsbygoogle || []).push({}); </script><ul class="nphpXgwzList"><li><b></b><a href="https://m.php.cn/ja/faq/1609.html" title="Bootstrap リスト グループ コンポーネントの詳細な分析" class="aBlack">Bootstrap リスト グループ コンポーネントの詳細な分析</a><div class="clear"></div></li><li><b></b><a href="https://m.php.cn/ja/faq/1640.html" title="JavaScript関数のカリー化の詳細説明" class="aBlack">JavaScript関数のカリー化の詳細説明</a><div class="clear"></div></li><li><b></b><a href="https://m.php.cn/ja/faq/1949.html" title="JS パスワードの生成と強度検出の完全な例 (デモ ソース コードのダウンロード付き)" class="aBlack">JS パスワードの生成と強度検出の完全な例 (デモ ソース コードのダウンロード付き)</a><div class="clear"></div></li><li><b></b><a href="https://m.php.cn/ja/faq/2248.html" title="Angularjs は WeChat UI (weui) を統合します" class="aBlack">Angularjs は WeChat UI (weui) を統合します</a><div class="clear"></div></li><li><b></b><a href="https://m.php.cn/ja/faq/2351.html" title="JavaScript を使用して繁体字中国語と簡体字中国語をすばやく切り替える方法と、簡体字中国語と繁体字中国語の切り替えをサポートする Web サイトのトリック_javascript スキル" class="aBlack">JavaScript を使用して繁体字中国語と簡体字中国語をすばやく切り替える方法と、簡体字中国語と繁体字中国語の切り替えをサポートする Web サイトのトリック_javascript スキル</a><div class="clear"></div></li></ul></div></div><ins class="adsbygoogle" style="display:block" data-ad-format="autorelaxed" data-ad-client="ca-pub-5902227090019525" data-ad-slot="5027754603"></ins><script> (adsbygoogle = window.adsbygoogle || []).push({}); </script><footer><div class="footer"><div class="footertop"><img src="/static/imghwm/logo.png" alt=""><p>福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!</p></div><div class="footermid"><a href="https://m.php.cn/ja/about/us.html">私たちについて</a><a href="https://m.php.cn/ja/about/disclaimer.html">免責事項</a><a href="https://m.php.cn/ja/update/article_0_1.html">Sitemap</a></div><div class="footerbottom"><p> © php.cn All rights reserved </p></div></div></footer><script>isLogin = 0;</script><script type="text/javascript" src="/static/layui/layui.js"></script><script type="text/javascript" src="/static/js/global.js?4.9.47"></script></div><script src="https://vdse.bdstatic.com//search-video.v1.min.js"></script><link rel='stylesheet' id='_main-css' href='/static/css/viewer.min.css' type='text/css' media='all'/><script type='text/javascript' src='/static/js/viewer.min.js?1'></script><script type='text/javascript' src='/static/js/jquery-viewer.min.js'></script><script>jQuery.fn.wait = function (func, times, interval) { var _times = times || -1, //100次 _interval = interval || 20, //20毫秒每次 _self = this, _selector = this.selector, //选择器 _iIntervalID; //定时器id if( this.length ){ //如果已经获取到了,就直接执行函数 func && func.call(this); } else { _iIntervalID = setInterval(function() { if(!_times) { //是0就退出 clearInterval(_iIntervalID); } _times <= 0 || _times--; //如果是正数就 -- _self = $(_selector); //再次选择 if( _self.length ) { //判断是否取到 func && func.call(_self); clearInterval(_iIntervalID); } }, _interval); } return this; } $("table.syntaxhighlighter").wait(function() { $('table.syntaxhighlighter').append("<p class='cnblogs_code_footer'><span class='cnblogs_code_footer_icon'></span></p>"); }); $(document).on("click", ".cnblogs_code_footer",function(){ $(this).parents('table.syntaxhighlighter').css('display','inline-table');$(this).hide(); }); $('.nphpQianCont').viewer({navbar:true,title:false,toolbar:false,movable:false,viewed:function(){$('img').click(function(){$('.viewer-close').trigger('click');});}}); </script></body><!-- Matomo --><script> var _paq = window._paq = window._paq || []; /* tracker methods like "setCustomDimension" should be called before "trackPageView" */ _paq.push(['trackPageView']); _paq.push(['enableLinkTracking']); (function() { var u="https://tongji.php.cn/"; _paq.push(['setTrackerUrl', u+'matomo.php']); _paq.push(['setSiteId', '9']); var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0]; g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s); })(); </script><!-- End Matomo Code --></html>