Js2XML 在转换为 XML 时返回了额外的“item”标签

Posted

技术标签:

【中文标题】Js2XML 在转换为 XML 时返回了额外的“item”标签【英文标题】:Js2XML returned extra "item" tag when converting to XML 【发布时间】:2021-07-28 15:42:47 【问题描述】:

我正在使用 js2xml 包将 json 对象转换为 xml。

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

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

为此,我在 typescript 中创建了下面的界面。

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下面返回。问题是额外的“item”标签出现在 indexNo 标签内。我想要的是上面提到的xml。

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

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

【问题讨论】:

【参考方案1】:

我更喜欢使用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>

【讨论】:

以上是关于Js2XML 在转换为 XML 时返回了额外的“item”标签的主要内容,如果未能解决你的问题,请参考以下文章

使用 Javascript 将 XML 转换为 JSON(并返回)

使用 Javascript 将 XML 转换为 JSON(并返回)

使用 Javascript 将 XML 转换为 JSON(并返回)

在 python 中将多个 excel '.xlsx' 转换为 '.csv' 文件时,我得到了额外的列?

xml格式用excel打开提示啊支持程序打开

使用校验和将字节数组转换为字符串。在 python 中重新迭代时获取额外的空字节