【发布时间】:2017-04-20 02:02:38
【问题描述】:
我有一个 XSD 之后的 XML 文件,我需要将它们转换为 JSON。
文件通常是这样的
example.xml:
<object name="foo">
<values>one</values>
<values>two</values>
<values>three</values>
<param attr="2" value="true" />
</object>
转换成 JSON 到这个
{
"name" : "foo",
"values" : [
"one",
"two",
"three"
],
"param" : {
"attr" : "2",
"value" : "true"
}
}
这几乎没问题,只是我希望输入数据,以便参数变为:
"param" : {
"attr" : 2,
"value" : true
}
XML 文件引用定义每个元素或属性的数据类型的 XSD 架构,例如
<xs:attribute name="attr" type="xs:integer"
XML 到 JSON 的转换是使用 XML::Simple 将 XML 读入 Perl 哈希并使用 JSON 模块编码成 JSON。
除了使用 XSD 架构中的定义来为每个字段加载具有正确类型的 XML 之外,我如何做同样的工作?
我需要使用 XSD,因为文本字段可能仅由数字组成。
【问题讨论】:
-
您不能这样做, 无类型数据是您最不必担心的。通常,XML 文档没有等效的 JSON 字符串。如果您尝试这样做,您将需要进行大量检查以确保不会丢失信息。为什么你认为这是必要的? XML 与 JSON 等一样可移植,并且有一个适用于大多数流行编程语言的 XML 库。
-
documentation for
XML::Simple有这个。 “你真的不想在新代码中使用这个模块”和“不鼓励在新代码中使用这个模块。其他模块可以提供更直接和一致的接口” 。XML::Simple距离考虑 XSD 架构还有很长的路要走。 -
您可能最终不得不并行浏览 XML 和 XSD。如果是这样的话,这是很多工作,远远超出了 SO 的范围。创建非通用解决方案(即实际上不读取 XSD 的解决方案)可能更快。
-
感谢您的意见。这个权利。出于某些原因,我需要同时保留这两种格式,所以要开发自己的工具。