Как я могу достичь этой структуры объекта с xml2 js? - PullRequest
1 голос
/ 03 апреля 2020

Я сейчас работаю с xml2 js. Я пытаюсь проанализировать файл xml со следующей структурой:

<?xml version='1.0' encoding='UTF-8'?>
<document>
    <teachers>
        <teacher>
            <id>1</id>
            <first_name>Gawen</first_name>
            <last_name>Rosenstengel</last_name>
            <email>grosenstengel0@google.com.hk</email>
        </teacher>
        <teacher>
            <id>2</id>
            <first_name>Fabien</first_name>
            <last_name>Stanford</last_name>
            <email>fstanford1@usa.gov</email>
        </teacher>
    </teachers>
    <ships>
        <ship>
            <id>1</id>
            <name>Brazelton</name>
            <length>218</length>
            <crew>555</crew>
        </ship>
        <ship>
            <id>2</id>
            <name>Ailsbury</name>
            <length>121</length>
            <crew>197</crew>
        </ship>
    </ships>
</document>

Я использую следующий метод asyn c (Typescript) для его анализа:

async parseXMLFile(path: string): Promise<any | undefined> {
   let xmlString = await fs.readFile(path, "latin1");
   let result = await xml2js.parseStringPromise(xmlString, xmlParseOptions);
   return result;
}

Я использую следующие параметры:

export const xmlParseOptions = { 
    explicitArray: false, 
    mergeAttrs: true, 
    explicitRoot: false 
};

Вывод, полученный в результате анализа:

{
  teachers: {
    teacher: [
      { id: '1', first_name: 'Gawen', last_name: 'Rosenstengel', email: 'grosenstengel0@google.com.hk' },
      { id: '2', first_name: 'Fabien', last_name: 'Stanford', email: 'fstanford1@usa.gov' }
    ]
  },
  ships: {
    ship: [
      { id: '1', name: 'Brazelton', length: '218', crew: '555' },
      { id: '2', name: 'Ailsbury', length: '121', crew: '197' }
    ]
  }
}

Теперь у меня вопрос, с какими настройками я могу получить следующий формат:

{
  teachers: [
    { id: '1', first_name: 'Gawen', last_name: 'Rosenstengel', email: 'grosenstengel0@google.com.hk' },
    { id: '2', first_name: 'Fabien', last_name: 'Stanford', email: 'fstanford1@usa.gov' }
  ],
  ships: [
    { id: '1', name: 'Brazelton', length: '218', crew: '555' },
    { id: '2', name: 'Ailsbury', length: '121', crew: '197' }
  ]
}

Я относительно новичок в xml, поэтому, возможно, я делаю что-то не так. Я уже заранее благодарю вас за ответы :)

...