简体   繁体   English

在node.js中具有重复元素的XML编写器

[英]XML writer with repeating elements in node.js

I'm trying to serialize an XML from a given object in node.js. 我正在尝试从node.js中的给定对象序列化XML。 I would like to serialize an array as some elements with the same name, ie the same element should be repeated. 我想将数组序列化为具有相同名称的某些元素,即应重复相同的元素。

Example: 例:

var objectToSerialize = {
    SomeElement: {
        Data: [3, 5, 2]
    }
};
serialize(objectToSerialize);

Requested result: 请求的结果:

<RootElement>
    <SomeElement>
        <Data>3</Data>
        <Data>5</Data>
        <Data>2</Data>
    </SomeElement>
</root>

I tried xml2js, but the result is: 我尝试了xml2js,但结果是:

<root>
    <SomeElement>
        <0>3</0>
        <1>5</1>
        <2>2</2>
    </SomeElement>
</root>

And I didn't find option to make it like that. 而且我没有找到让它那样的选择。

Which library can serialize such XML? 哪个库可以序列化此类XML?

Notes: 笔记:

  • The question is mainly about how to OUTPUT such XML, I have the freedom to define the input format (for example, I may decide that serializing such XML will occur when a Uint8Array is passed instead of array, etc.). 问题主要是关于如何输出这样的XML,我可以自由定义输入格式(例如,我可以决定当传递Uint8Array而不是array时,将对此类XML进行序列化)。
  • The array contains only numbers. 该数组仅包含数字。
  • Richer libraries to write XML are prefered as I need some more features which might be special (like writing xmlns attributes). 由于我需要一些可能很特殊的功能(例如编写xmlns属性),因此更倾向于使用更丰富的XML来编写XML。

Edit: Not like the input, this is of high priority that the structure of the array in the output XML will match the exact example I gave. 编辑:与输入不同,这是输出XML中数组结构与我给出的确切示例完全匹配的优先级。

You can try this libary xml-mapping 您可以尝试此库xml映射

var XMLMapping = require('xml-mapping');
var objectToSerialize = {
    SomeElement: {
        Data: [3, 5, 2]
    }
};

console.log(XMLMapping.dump(objectToSerialize));

The output is: 输出为:

<SomeElement>
   <Data><![CDATA[3]]></Data>
   <Data><![CDATA[5]]></Data>
   <Data><![CDATA[2]]></Data>
</SomeElement>

To whom it may concern, I ended up with "xml": https://www.npmjs.com/package/xml 可能与之相关的人以“ xml”结尾: https : //www.npmjs.com/package/xml

It only requires changing the input into: 它只需要将输入更改为:

var objectToSerialize = [{
    SomeElement: [
        { Data: 3 },
        { Data: 5 },
        { Data: 2 }
    ]
}];

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM