2012-10-30 111 views
3

有誰知道如何使用的NodeJS修改XML標籤

這是我的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]); 
     }); 
    }); 
} 

這讀取節點值,但我需要修改標記值。 請幫忙。

+0

沒有人知道這個嗎? –

回答

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塊輸出,所以庫具有非常小的內存佔用量。