2012-05-14 29 views
1

IISでホストされているNode.jsからローカルXMLファイルをロードして解析しようとしています。 文字列を読み込むためにfs readFileを使用し、それを解析するためにxmldomモジュールを使用しました。 ファイルサイズが小さい(数kb)までは動作しますが、3Mb xmlを読み込もうとすると失敗します。Windowsでnode.js経由でxmlファイルをロードする

他のどのxmlモジュールのウィンドウでもパフォーマンスが向上しますか?それが動作するシンプルな例にしながら、

これ

は、5分パーサがまだ実行されているXMLの後に私のコード

var fs = require('fs'); 
fs.readFile('C:\\Temp\\TEST.xml', 'ascii', function(err,data){ 
    if(err) { 
     console.log("Could not open file"+ err); 
     process.exit(1); 
    } 
    var Dom = require('xmldom').DOMParser; 
    var doc = new Dom().parseFromString(data.substring(2,data.lenght)); 
    console.log(doc.childNodes[0].localName); 
}); 

です。 10分の出力が例外RangeErrorされた後、私は、xml形式

でMSINFO32からの出力を保存:

+0

「失敗する」とはしません。どのように失敗していますか?あなたはそれが有効な文書であると確信していますか? – reinierpost

答えて

0

:最大コールスタックサイズは

出力は "\ TEMPの\のTEST.NFO MSINFO32/NFO C" から生成される超過しましたただ、XML文書がここに有効であることを確認してください。

http://www.w3schools.com/xml/xml_validator.asp

それは、それは失敗だ場合、私は彼らのgithubのページ

上の問題を開くことをお勧め210

あなたは、私が個人的な問題「UCS2」で

+0

xmlファイルは有効ですが、生成には時間がかかります...失敗の理由がiisタイムアウトであるかどうかはわかりませんが、もっと速いものが必要です。 xml2jsonにはexpatが必要です。これは、コンパイルしない限り、Windowsでは利用できません。 xmlストリームを処理するモジュールはありますか?より速くなるでしょうか? – fab

+0

IISのタイムアウトは起こりそうにない、どれくらいかかりますか? (私は30秒以上かかることはないと思う))。とにかくおそらくxmldomにはまっているでしょう。なぜなら、他のノードパーサーの多くはlibxml2を使っているからです。あなたはWindows上でcygwinを使ってそれを使うべきです。いい考えではありません。 /あなたのコードと問題を開く、それは任意の例外をスローしますか?あなたはIISでタイムアウトを見つけることができますか? – BFil

+0

これは私のコードです。var fs = require( 'fs'); \t console.log( "ファイルを開くことができませんでした" + err)fs.readFile( 'C:\ Temp \\ TEST.xml'、 'ascii'、function(err、data) ; \t process.exit(1);} VARドム=必要とする( 'XMLDOM')DOMParserに;。。 VARドキュメント=新しいDOM()parseFromString(data.substring(2、data.lenght)); console.log(doc.childNodes [0] .localName); \t }); 5分後にxmlパーサはまだ実行されていますが、より単純な例では動作します。私はmsinfo32の出力をxml形式で保存しました – fab

0

MSINFO32出力せずにxml2jsを使用しましたnpm

に他のモジュールを検索することができ、間違ったエンコーディングが問題を引き起こしました。 Xmldomパーサーは、ファイル全体を解析するのに数分かかる場合でも正常に動作します。

私は私はあなたがな長さではなく長さを書いたことがわかり

-1

を解析するXMLの枝を抽出するためにxml-splitterを使用...たぶんそれが問題です!

+2

OPの問題に対する解決策を提供していないので、これは解答ではなくコメントでなければなりません(カットアンドペーストのエラーをチェックしてください)。 –

関連する問題