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

时间:2015-06-18 09:06:12

标签: javascript json xml node.js serialization

我正在尝试从node.js中的给定对象序列化XML。我想将一个数组序列化为一些具有相同名称的元素,即应该重复相同的元素。

示例:

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

请求结果:

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

我尝试了xml2js,但结果是:

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

而且我没有找到这样的选择。

哪个库可以序列化这样的XML?

注意:

  • 问题主要是关于如何输出这样的XML,我可以自由地定义输入格式(例如,我可能决定在传递Uint8Array而不是数组时序列化这样的XML等。)< / LI>
  • 数组只包含数字。
  • 更喜欢编写XML的库,因为我需要一些可能特殊的功能(比如编写xmlns属性)。

编辑:与输入不同,输出XML中数组的结构与我给出的确切示例相匹配,具有高优先级。

2 个答案:

答案 0 :(得分:0)

您可以尝试使用此库xml-mapping

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

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

输出结果为:

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

答案 1 :(得分:0)

对于它可能涉及的人,我最终得到了“xml”:https://www.npmjs.com/package/xml

只需要将输入更改为:

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