3

NodeJSを使用してXMLファイルのタグ値を変更する方法を知っている人はいますか

これは私のXMLファイルです:

<note>
    <to>Tove</to>
    <from>Jani</from>
    <heading>Reminder</heading>
    <body>Don't forget me this weekend!</body>
</note>

に変更し<node>たい<n>

WindowsでnodeJSを実行しています。これまでのところ、次のコードがあります。

var parser = new xml2js.Parser();
function xmltxt(response, postData){
    fs.readFile( './foo.xml', function(err, data) {
        parser.parseString(data, function (err, result) {
            console.dir(result.note.to[0]);
        });
    });
}

これはノード値を読み取りますが、タグ値を変更する必要があります。助けてください。

4

1 に答える 1

0

Damn-simple-xmlを使用すると、次のことができます。

var Serializer = require("damn-simple-xml");  // constructor
var dsx = new Serializer();
var fs = require("fs");

var out = fs.createWriteStream("./foo2.xml");

dsx.deserialize(fs.createReadStream("./foo.xml"), function(err, root) {
    if (err) {
        console.log(err);
        return;
    }
    dsx.serialize({
        name: "n",
        data: root.data
    }, 
    function(err, xmlpart, level) {
        if (err) {
            console.log(err);
            return;
        }
        out.write(xmlpart);
        if (level === 0) { // XML streaming done
            out.end(); // closes the stream.
        }
    });
});

root前の例では、逆シリアル化コールバックでオブジェクトを受け取ります。このオブジェクトはroot.name(つまり、ルート ノードの名前) で構成さroot.dataれ、デシリアライズされた XML ドキュメントからの実際のデータです。

次に、シリアル化するときに同じroot.dataオブジェクトを返しますが、質問で指定されているようにルートノードの名前を「n」に変更します。

Damn-simple-xml はストリームを使用して xml を入力し、そのコンテンツを XML チャンクとして出力できるため、ライブラリのメモリ フットプリントは非常に小さくなります。

于 2015-03-30T17:04:26.407 に答える