所以我有一个xml文件,我试图在节点中编写一个快速脚本进行编辑,以备将来使用。
每行如下所示
<field name='Bank 2 Acc Type' xname='bank_2_acc_type' locx='264' locy='407.5' width='24.75' esign='' />
<field name='Bank 2 Ch Sav' xname='bank_2_ch_sav' locx='339.75' locy='408.25' width='25.5' esign='' />
<field name='Bank 2 Acc Num' xname='bank_2_acc_num' locx='471' locy='408.25' width='100.5' esign='' />
我想要做的是获取xname,在其前面附加一个字符串,例如“ myString”,然后将该属性分配给esign。下面的例子
<field name='Bank 2 Acc Type' xname='bank_2_acc_type' locx='264' locy='407.5' width='24.75' esign='myStringbank_2_acc_type' />
<field name='Bank 2 Ch Sav' xname='bank_2_ch_sav' locx='339.75' locy='408.25' width='25.5' esign='myStringbank_2_ch_sav' />
<field name='Bank 2 Acc Num' xname='bank_2_acc_num' locx='471' locy='408.25' width='100.5' esign='myStringbank_2_acc_num' />
到目前为止,我已经尝试使用行读取器库逐行读取数据,但这并不能以我需要的方式返回数据
const lineReader = require('line-reader');
lineReader.eachLine('./Application.txt', function(line) {
console.log(line);
if (line.includes('esign=\'\'')) {
var line2 = line.toString()
console.log(line)
var pFrom = line2.IndexOf("xname='") + "xname='".Length;
var pTo = line2.LastIndexOf("' ");
var result = line2.Substring(pFrom, pTo - pFrom);
console.log(result)
return false; // stop reading
}
});
这是我重写后要阅读的内容,我现在只需要帮助编辑xml。
var fs = require('fs');
function readWriteSync() {
var data = fs.readFileSync('Application.xml', 'utf-8');
var newValue = data.replace(/^\./gim, 'myString');
fs.writeFileSync('ApplicationSync.xml', newValue, 'utf-8');
console.log('readFileSync complete');
}
readWriteAsync();
readWriteSync();
谢谢。
答案 0 :(得分:0)
结帐xml2json on npm。 您可以将其转换为json,在进行操作时将其解析回xml。
var parser = require('xml2json');
var xml = "<foo attr=\"value\">bar</foo>";
console.log("input -> %s", xml)
// xml to json
var json = parser.toJson(xml);
console.log("to json -> %s", json);
// maybe parse json
var myObj = JSON.parse(json)
// json to xml
var xml = parser.toXml(json);
// obj to xml
var xmlObj = parser.toXml(JSON.stringify(myObj))
console.log("back to xml -> %s", xml)