最近、XMLがプロジェクトで使用されています。要件は、ユーザーが製品をインストールするときに、最初に一連のデータをXMLファイルに保存し、最後のステップが実行されたらデータベースに書き込むことです。これにより、データベースへのアクセスが最小化されるため、各ブラウザの互換性を心配する必要があります(SAD ...)
メインテキストを入力し、XMLファイル(createinstal.xml)です
<?xml version = "1.0" encoding = "utf-8"?> <item> <item> <id description = "level" name = "1" f_chines = "" t_chines = "" englies = "id" value = "1"> number </id> <levelname description = "level" name = "" f_chines = "level-name =" t_chines " name </levelname> <Decrption説明= "level" name = "" f_chines = "level-description" english = "level-description" value = "level"> description </decroption> <tchines description = "level" name = "" "f_chines =" f_Chines = "英語名" T_CHINES = "英語名"英語= "英語"値= "levelOne">英語名</inglish> <6説明= "award" name = "106" f_chines = "award" t_chines = "six" "英語=" worda-of-t "value =" a "/> <agion英語= "11" value = "0.05"/> <arge evelen description = "award" name = "112" f_chines = "award evelen" t_chines = "award" name = "112" f_chines = "award evelen" t_chines = "award" name = "113" f_chines = "award" t_chines = "333" "0.85"/< name = "101" f_chines = "1つの" t_chines = "one" english = "aword-of-a" value = "0.90"/> </item> </info>
IEおよびFFと互換性があるため、次の機能(LoadXML.js)を記述します。
var is_ie = false; // IT IE Browser if(window.activexobject){is_ie = true;} // Multi-Browser-compatible xml Document関数loadxml(xmlurl){var xmldoc = null; try {xmldoc = new ActivexObject( "Microsoft.xmoc = try");} catch(e);} document.implementation.createdocument( "" ""、 ""、null);} catch(e){alert(e.message);}} try {// xmldoc.async = false; xmldoc.load(xmlurl); return xmldoc;} catch(e){e.message(e.message); XMLドキュメント形式の文字列XMLドキュメント関数createxml(xmltext){if(!xmltext){returnnull; try {var xmldocm = new ActiveXObject( "microsoft.xmldom"); xmldocm.loadxml(xmltext); return xmldocm; {e){e) domparse()。parsefromstring(xmltext、 "text/xml");} catch(e){returnnull;}}}}} onode.childnodes.length; length){//子ノードの静けさif(onode.childnodes [i] .haschildnodes()){// getxmltext(onode.childnodes [i]);} onode [i] .childnodes.nodevalue;}} return stext;} //ノードとその子供のノードの文字列識別を取得しますgetxml(onode){if(onode.xml){// iereturn onode.xml;} var serializer = new xmlsearializer(); serializer.serializetostring(onode);} //指定されたノードのテキストを取得します(注:onode.childnodes [0] .nodevalueを使用してノードのテキスト情報を取得します。 (onode.nodetype == 1)return onode.textcontent;}} //指定されたノード関数の属性値を取得getxmlnodeattribute(onode、attrname){if(is_ie){return onode.gettribute(attrname); onode.attributes [attrname] .value; return "未定";}}OK IEとFFはもはや問題ではありません。特定の操作方法は次のとおりです。
var docum = loadxml( "createinstal.xml"); // xmlファイルvar root = document.documentlement; // root node var nodeList = root.getelementsbytagname( "items"); getXmlNodeAttribute(nodelist [0] .childnodes [i]、 "description"); //このノードの説明属性を取得するif(attr!= "未定")//目的はff browser {alert(attr); }}これにより、IEとFFの間の互換性が確保されます(現在、Google Chromeはこの方法を使用して互換性があり、まだ変更されています)
また、FirefoxでXMLを取得する2つの方法について話しましょう。
JS FirefoxでXMLファイルを読み取ります
私は長い間オンラインで「JS XMLファイルを読んでいるXMLファイル」の方法を検索しましたが、それらの多くは尋ねられ、誰も答えませんでした。 Firefoxについて不平を言っているプログラマーがたくさんいるのを見ました。私はポイントに戻りました。 Firefoxは、IEのActiveXObjectオブジェクトをサポートしていません。 XML DOMを取得するには、次の2つの方法があります。
1。document.implementation.createdocument( "" "、" "、null);
2。WINDOW.XMLHTTPREQUEST
例:1。vardom = document.implementation.createdocument( "" "、" "、null);
dom.async = false;
dom.load( "test.xml"); // domはXMLオブジェクトです。
2。varoxmlhttp = new xmlhttprequest();
oxmlhttp.open( "get"、 "test.xml"、false);
oxmlhttp.send(null);
//oxmlhttp.responsexmlはXMLオブジェクトです。
知らせ:
1。FirefoxはXMLドキュメントを分析します
2。FirefoxブラウザーとTextContentを使用して、XMLの異なるノードの値を解析します。
3。そして、階層的な子ノードの前後に「/n」ラインブレークを追加します(つまり、子育てを使用する場合)。 (これがFireBugでデバッグするときになぜそうなのかわからないので、私が書いたコードをテストするのが最善です。環境を変更するのが間違っている場合は、最初のノードは「/n」であり、2番目のノードは本当のノードです
最初のノード。 3番目のノードは「/n」で、4番目のノードは実際の2番目のノードです。
上記のFirefoxの状況によると、子供号の使用を避け、互換性を達成することを避けるための例がここにあります:クリックして入力してください
上記は、編集者によって提起されたJS操作XMLファイルの実装方法で、IEとFirefoxのすべての内容と互換性があります。誰もがwulin.comをもっとサポートすることを願っています〜