将js对象中的数组对象解析为xml不起作用



嘿,我试图解析一个javascript对象到xml字符串在node.js应用程序。我使用npm包json2xml像这样

json2xml(jsonObject, { header: true });

我的问题是,当有一个数组对象,它会解析它像这样:

root: {
foo: [
{
bar: 'a',
},
{
bar: 'b',
},
],
};
<root>
<foo>
<bar>a</bar>
<bar>a</bar>
</foo>

而不是像这样:

<root>
<foo>
<bar>a</bar>
</foo>
<foo>
<bar>b</bar>
</foo>
</root>

如我所愿。你有任何建议或任何其他库,我可以使用来解决这个问题吗?

我已经尝试了其他几个库:jstoxml,@javadev/xmltojson,fast-xml-parser,没有解决这个问题。我想写我自己的jsToXml解析器xD

对象应该这样组成:

{root: [{foo: {bar: "a"}}, {foo: {bar: "b"}}]}

假设我有一个更复杂的对象,像这样:

{
root: {
method: "ping",
success: 1,
error_code: 0,
error_text: null,
params: {
foo: 11,
bar: [
{
id: 62278639526,
success: 1,
error_code: 0
},
{
id: 96176048010,
success: 1,
error_code: 0
}
]
},
response_id: "b33ba904",
time: 1681373894,
}
}

我还没有找到一种方法如何将js对象转换为xml:

<?xml version="1.0" encoding="UTF-8"?>
<root>
<method>ping</method>
<success>1</success>
<error_code>0</error_code>
<error_text />
<params>
<foo>11</foo>
<bar>
<id>62278639526</id>
<success>1</success>
<error_code>0</error_code>
</bar>
<bar>
<id>96176048010</id>
<success>1</success>
<error_code>0</error_code>
</bar>
</params>
<response_id>b33ba904</response_id>
<time>1681373894</time>
</root>

我总是得到这个:

<?xml version="1.0" encoding="UTF-8"?>
<root>
<method>ping</method>
<success>1</success>
<error_code>0</error_code>
<error_text />
<params>
<foo>11</foo>
<bar>
<id>62278639526</id>
<success>1</success>
<error_code>0</error_code>
<id>96176048010</id>
<success>1</success>
<error_code>0</error_code>
</bar>
</params>
<response_id>b33ba904</response_id>
<time>1681373894</time>
</root>

完全不是一回事,那么我就写上:

<?xml version="1.0" encoding="UTF-8"?>
<root>
<method>ping</method>
<success>1</success>
<error_code>0</error_code>
<error_text />
<params>
<foo>11</foo>
<bar>
<bar>
<id>62278639526</id>
<success>1</success>
<error_code>0</error_code>
</bar>
<bar>
<id>96176048010</id>
<success>1</success>
<error_code>0</error_code>
</bar>
</bar>
</params>
<response_id>b33ba904</response_id>
<time>1681373894</time>
</root>

所以我不确定,如果我想要这个库是可能的。我只是想确定是否有解决办法。如果不行也没关系,我可以找别的办法。

如果你想转换更复杂的例子是不可能的,除非你在'params'中添加一个键,但这不是一回事:

{
"root":{
"method":"ping",
"success":1,
"error_code":0,
"error_text":null,
"params":{
"foo":11,
"bar":[
{
"bar":{
"id":62278639526,
"success":1,
"error_code":0
}
},
{
"bar":{
"id":96176048010,
"success":1,
"error_code":0
}
}
]
},
"response_id":"b33ba904",
"time":1681373894
}
}

相关内容

  • 没有找到相关文章

最新更新