乍一看,我认为在javascript中使用xml数据很简单,只需找到一个xml-to-json库并将xml转换为javascript对象树即可。
但是,现在我意识到可以在xml中创建不直接映射到json的结构。
具体地说,这是:
<parentNode>
<fooNode>data1</fooNode>
<barNode>data2</barNode>
<fooNode>data3</fooNode>
</parentNode>我发现的xml- to -json工具将前面的内容转换为以下内容:
{
parentnode:{
foonode:[
'data1',
'data3'
],
barnode:'data2'
}}
其中,子节点的顺序已经改变。我需要保持我的子节点的顺序。任何人都有比这更优雅的解决方案
a)放弃自动转换的想法,只设计我自己的javascript对象结构,并编写代码来处理这个特定的xml模式
或
b)完全放弃任何转换的想法,将xml数据作为xml文档,然后将其遍历。
发布于 2013-09-06 20:43:35
存在已建立的从XML到JSON的映射(请参阅)和从JSON到XML的映射(请参阅JSONx as defined here和conversion rules by IBM)。但是,还没有定义从XML到JSON的保持顺序的映射。要完全捕获XML的所有方面,应该用JSON表达XML Infoset。如果您只关心XML元素(没有处理指令等),我会选择这个结构:
[
"parentNode",
{ } /* attributes */
[
[ "fooNode", { }, [ "data1" ] ]
[ "fooNode", { }, [ "data2" ] ]
[ "fooNode", { }, [ "data3" ] ]
]
]我实现了与XML和Perl数据结构之间的映射相同的映射,就像用XML::Struct实现的JSON一样。该结构还对应于XML的简化子集MicroXML的抽象数据模型。
发布于 2009-05-12 16:33:14
如果经常需要相同的元素名称,并且关心排序,那么使用XML可能会更好。您希望从使用JSON中获得什么好处?
发布于 2009-05-12 16:36:07
为什么不试试:
{ parentNode: [
["fooNode", "data1"],
["barNode", "data2"],
["fooNode", "data3"] ]
}我认为这或多或少会解决问题。
是的,我认为如果自动转换不够灵活,您应该放弃它;相反,您可能会寻找一种使这种映射变得微不足道的API。
https://stackoverflow.com/questions/853665
复制相似问题