在 js 中根据搜索查找并返回键/对象编号

问题描述 投票:0回答:0

我有一个很大的 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.
javascript node.js json xml search
© www.soinside.com 2019 - 2024. All rights reserved.