首页 > 解决方案 > Js2XML 在转换为 XML 时返回了额外的“item”标签

问题描述

我正在使用js2xml包将 json 对象转换为 xml 做打字稿项目。

下面是我需要作为输出的 xml 。

<?xml version="1.0" encoding="UTF-8"?>
<Marks>
    <IndexNo>202104455</IndexNo>
    <IndexNo>20210488</IndexNo>
</Marks>

为此,我在打字稿中创建了下面的界面。

export interface Subject {
    IndexNo: string[];
}

然后我分配如下值。

    let objSubject: Subject = {
      IndexNo: ["202104455", "20210488"]
    }

    var jsn = JSON.parse(JSON.stringify(objSubject));
    console.log(jsn);
    var outputXML = new Js2Xml("Marks", jsn);

上面的json是,

{ IndexNo: [ '202104455', '20210488' ] }

执行后,它在xml下面返回。问题是额外的“项目”标签出现在 indexNo 标签内。我想要的是上面提到的xml。

<?xml version="1.0" encoding="UTF-8"?>
<Marks>
  <IndexNo>
    <item>202104455</item>
    <item>20210488</item>
  </IndexNo>
</Marks>

如何解决上述问题?有没有其他 npm 包可以完成我的任务?

标签: xmltypescriptxmlconvertjs2xml

解决方案


我更喜欢使用xml-js,复杂但有效 ;-)

import { js2xml } from 'xml-js';

const objSubject = {
  declaration: { attributes: { version: '1.0', encoding: 'utf-8' } },
  elements: [
    {
      type: 'element',
      name: 'Marks',
      elements: [
        {
          type: 'element',
          name: 'IndexNo',
          elements: [{ type: 'text', text: '202104455' }],
        },
        {
          type: 'element',
          name: 'IndexNo',
          elements: [{ type: 'text', text: '20210488' }],
        },
      ],
    },
  ],
};

var outputXML = js2xml(objSubject);

console.log(outputXML.toString());

输出:

<Marks><IndexNo>202104455</IndexNo><IndexNo>20210488</IndexNo></Marks>

推荐阅读