我有一个很大的 xml 文件,我需要根据对文件的搜索进行编辑。我只编辑一个字符。数据是这样排列的。我可以成功更改第一个结果,因为它是项目“0”。我需要在所有名为“事件名称”的字段中搜索关键字,并将“活动”值更改为 1 或 0。我当前的 JavaScript 代码如下所示。
我为此使用 Node.js。
数据文件结构
`<events>
<event name="FIND THIS VALUE">
<nominal>1</nominal>
<min>1</min>
<max>1</max>
<lifetime>1800</lifetime>
<restock>0</restock>
<saferadius>0</saferadius>
<distanceradius>0</distanceradius>
<cleanupradius>0</cleanupradius>
<flags deletable="1" init_random="0" remove_damaged="1"/>
<position>fixed</position>
<limit>child</limit>
<active>CHANGE THIS VALUE</active>
<children>
<child lootmax="20" lootmin="20" max="1" min="1" type="ChristmasTree_Green"/>
</children>
</event>
</events>`
此代码将我的 XML 更改为 JSON,对其进行编辑并将其另存为 XML。我需要一个搜索功能。
var fs = require("fs"),
parseString = require("xml2js").parseString,
xml2js = require("xml2js");
fs.readFile("MY-FILE.xml", "utf-8", function(err, data) {
if (err) console.log(err);
parseString(data, function(err, result) {
if (err) console.log(err);
var json = result;
//HERE IS THE PROBLEM....This does change the very first Event's Active to 0
json.events.event[0].active = "0";
var builder = new xml2js.Builder();
var xml = builder.buildObject(json);
fs.writeFile("MY-FILE.xml", xml, function(err, data) {
if (err) console.log(err);
console.log("successfully written our update xml to file");
});
});
});
这是 data.xml 的原始片段
{
"events": {
"event": [
{
"$": {
"name": "FIND THIS VALUE"
},
"nominal": [
"1"
],
"min": [
"1"
],
"max": [
"1"
],
"lifetime": [
"1800"
],
"restock": [
"0"
],
"saferadius": [
"0"
],
"distanceradius": [
"0"
],
"cleanupradius": [
"0"
],
"flags": [
{
"$": {
"deletable": "1",
"init_random": "0",
"remove_damaged": "1"
}
}
],
"position": [
"fixed"
],
"limit": [
"child"
],
"active": [
"CHANGE THIS VALUE"
],
"children": [
{
"child": [
{
"$": {
"lootmax": "20",
"lootmin": "20",
"max": "1",
"min": "1",
"type": "ChristmasTree_Green"
}
}
]
}
]
},
Thank you very much for any assistance.