【发布时间】:2020-12-03 12:59:24
【问题描述】:
所以我有一个 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' />
到目前为止,我已经尝试使用 line-reader 库逐行读取,但这并没有按照我需要的方式返回数据
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();
谢谢。
【问题讨论】:
-
为什么用python标记?请不要标记垃圾邮件。
-
仅供参考的标准 JavaScript 属性和方法是
camelCase,而不是TitleCase。尝试将IndexOf更改为indexOf等。
标签: javascript node.js xml