6

node.jsでjQuery parseXmlを使用しようとしています

このエラーが発生しています:

Error: Invalid XML: <?xml version="1.0"...

しかし、問題はXML にはありません

問題は node-jquery.js にあります:

parseXML: function( data ) {
        if ( typeof data !== "string" || !data ) {
            return null;
        }
        var xml, tmp;
        try {
            if ( window.DOMParser ) { // Standard
                tmp = new DOMParser();
                xml = tmp.parseFromString( data , "text/xml" );
            } else { // IE
                xml = new ActiveXObject( "Microsoft.XMLDOM" );
                xml.async = "false";
                xml.loadXML( data );
            }
        } catch( e ) {
            xml = undefined;
        }
        if ( !xml || !xml.documentElement || xml.getElementsByTagName( "parsererror" ).length ) {
            jQuery.error( "Invalid XML: " + data );
        }
        return xml;
    },

簡単に言うと、node.js にはDOMParserがなく、ActiveXObject( "Microsoft.XMLDOM" )もありません。

私はWindowsで作業しているので、ActiveXObjectが機能することを期待していますが、そうではありません.jQueryによって飲み込まれた実際のエラーは無効なXMLではありません.ActiveXObjectが定義されていません:

ReferenceError: ActiveXObject is not defined
at Module._compile (module.js:449:26)
at Object.Module._extensions..js (module.js:467:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Module.runMain (module.js:492:10)
at process.startup.processNextTick.process._tickCallback (node.js:244:

これに対する回避策はありますか?jQuery.parseXML を機能させるにはどうすればよいですか?

4

3 に答える 3

6

私はxmldomを使用して大きな成功を収めました。見てください。あなたが期待するように、xmlを解析するようです$.parseXML。jqueryパーサーにも問題があり、たくさん試した後、これに切り替えました。

于 2012-07-28T00:55:24.317 に答える
5

コードを変更せずに使い続けたい場合jQuery.parseXML(クライアント側と Node.js の両方で同じ JavaScript を実行できるようにしたい場合など) は、簡単にセットアップできます。M. Laing の回答で言及されているxmldomモジュールは、jQuery がブラウザーでDOMParserを使用するのと同じ方法で使用できるコンストラクターを公開します。その方法は次のとおりです。DOMParser

まず、xmldom をインストールします。

npm install xmldom --save

すでに Node.js で jQuery 2.1.x 以降が動作していると仮定すると (セットアップの手順については、このリポジトリの README を参照してください)、xmldom を要求し、そのDOMParserコンストラクターをグローバルとして公開することができます。

global.DOMParser = require('xmldom').DOMParser;

jQuery が正常に実行できるようになりましたparseXML

于 2014-09-04T03:27:38.457 に答える
1

これは、nodejsのコアに実装する必要があるもののようです。XMLを解析するように設計されたモジュールを使用することをお勧めします。

https://github.com/Leonidas-from-XIV/node-xml2js

ブラウザにクロスしてサーバー上で実行するコードを記述しようとしているように、jQuery.parseXMLが機能する必要がありますか?

おそらくbrowserifyを使用してブラウザでnode-xml2jsを公開できます

node-xml2jsよりもXMLに似ているように見えるlibxmljsもあります。

于 2012-07-27T23:32:55.310 に答える