2

私が達成したいことは次のとおりです。

  • XML のチャンクを解析する
  • いくつかの値を編集する
  • 最終結果を新しいxmlファイルに保存する

モジュールはsax-js です: https://github.com/isaacs/sax-js#readme

モジュールには、読み取り/書き込みを行うためのメカニズムが組み込まれています。

その仕事は簡単だと思いました。それどころか、私は一日中それに苦労しています。

これが私のコードです:

var fs = require('fs');
var saxStream = require("sax").createStream(true);

saxStream.on("text", function (node) {
    if (node === 'foo') { //the content I want to update
    node = 'blabla';    
  }
});
fs.createReadStream("mysongs.xml")
  .pipe(saxStream)
  .pipe(fs.createWriteStream("mysongs-copy.xml"));

更新されたストリームを新しいファイルに書き込むには、一部のコンテンツを更新するだけで十分だと思いました (上記のコメントを参照)。

このコードの何が問題になっていますか?

ご協力いただきありがとうございます、

ローランド

4

3 に答える 3

1

XML の一般的な構造を知っている場合は、xml-flow を試すことができます。XML ストリームをオブジェクトに変換しますが、それらを xml 文字列に戻すユーティリティがあります: https://github.com/matthewmatician/xml-flow

于 2015-09-09T22:16:24.377 に答える
1

saxモジュールでは、そのようなノードの変更はできません。このコードを見ると、入力が無差別に出力に渡されていることがわかります。

しかし、すべての希望が失われるわけではありません!pretty-printの例を確認してください。これは、やりたいことの良い出発点になるでしょう。ただし、ストリームを読み込めるようにしたい場合は、ストリームの読み取り可能な部分を実装するために少し作業を行う必要があります.pipe()

于 2013-05-25T05:19:01.920 に答える