我想将XML转换为JSON(具体地说,是OAI-PMH响应)。我目前正在使用这个节点。JSXML2JS,但问题是JSON非常冗长,有很多嵌套和数组级别,即使只有一个元素作为子元素,并且永远不会超过一个。问题是,xml2js
不知道XML文件的模式,因此必须保守。
我的问题是,是否有任何其他(最好是JavaScript)代码可以使用XML架构来指导转换过程?因此,如果架构定义了XML的类型和结构,那么JSON就会利用这一点,并自动拥有正确的类型,而不是不必要的数组级别。
在 GitHub 上找到以下完成这项工作的项目库:Schema Aware XML 到 JSON 转换器 。
这个库在java中完成这项工作。它还没有完全成熟,但使用提供的Schema进行转换。
最后,我决定只实现这样一个包:xml4js。
因此,对于XML Primer中的XML:
<?xml version="1.0"?>
<purchaseOrder orderDate="1999-10-20" xmlns="http://www.example.com/PO">
<shipTo country="US">
<name>Alice Smith</name>
<street>123 Maple Street</street>
<city>Mill Valley</city>
<state>CA</state>
<zip>90952</zip>
</shipTo>
<billTo country="US">
<name>Robert Smith</name>
<street>8 Oak Avenue</street>
<city>Old Town</city>
<state>PA</state>
<zip>95819</zip>
</billTo>
<comment>Hurry, my lawn is going wild!</comment>
<items>
<item partNum="872-AA">
<productName>Lawnmower</productName>
<quantity>1</quantity>
<USPrice>148.95</USPrice>
<comment>Confirm this is electric</comment>
</item>
<item partNum="926-AA">
<productName>Baby Monitor</productName>
<quantity>1</quantity>
<USPrice>39.98</USPrice>
<shipDate>1999-05-21</shipDate>
</item>
</items>
</purchaseOrder>
如果不使用XML模式来指导转换过程,在打开显式数组的情况下,您将得到:
{
"purchaseOrder": {
"$": {
"orderDate": "1999-10-20",
"xmlns": "http://www.example.com/PO"
},
"shipTo": [
{
"$": {
"country": "US"
},
"name": [
"Alice Smith"
],
"street": [
"123 Maple Street"
],
"city": [
"Mill Valley"
],
"state": [
"CA"
],
"zip": [
"90952"
]
}
],
"billTo": [
{
"$": {
"country": "US"
},
"name": [
"Robert Smith"
],
"street": [
"8 Oak Avenue"
],
"city": [
"Old Town"
],
"state": [
"PA"
],
"zip": [
"95819"
]
}
],
"comment": [
"Hurry, my lawn is going wild!"
],
"items": [
{
"item": [
{
"$": {
"partNum": "872-AA"
},
"productName": [
"Lawnmower"
],
"quantity": [
"1"
],
"USPrice": [
"148.95"
],
"comment": [
"Confirm this is electric"
]
},
{
"$": {
"partNum": "926-AA"
},
"productName": [
"Baby Monitor"
],
"quantity": [
"1"
],
"USPrice": [
"39.98"
],
"shipDate": [
"1999-05-21"
]
}
]
}
]
}
}
但是这个包给你这个:
{
"purchaseOrder": {
"$": {
"orderDate": "1999-10-20T00:00:00.000Z"
},
"shipTo": {
"$": {
"country": "US"
},
"name": "Alice Smith",
"street": "123 Maple Street",
"city": "Mill Valley",
"state": "CA",
"zip": 90952
},
"billTo": {
"$": {
"country": "US"
},
"name": "Robert Smith",
"street": "8 Oak Avenue",
"city": "Old Town",
"state": "PA",
"zip": 95819
},
"comment": "Hurry, my lawn is going wild!",
"items": {
"item": [
{
"$": {
"partNum": "872-AA"
},
"productName": "Lawnmower",
"quantity": 1,
"USPrice": 148.95,
"comment": "Confirm this is electric"
},
{
"$": {
"partNum": "926-AA"
},
"productName": "Baby Monitor",
"quantity": 1,
"USPrice": 39.98,
"shipDate": "1999-05-21T00:00:00.000Z"
}
]
}
}
}
我在X2JS上有一个类似但相反的问题:如果只有一个子元素(即使它应该是一个列表),它也不会创建一个列表。解决方案(对我来说)是为转换器提供额外的选项“arrayFormPaths” - 这会导致匹配的元素成为数组,即使只有一个元素。
我同意应该有一种使用XML模式来做到这一点的方法......但我也找不到任何东西。
XML输入文件: XML输入文件转换为XML输出文件。将XML输入文件的firstName、middleName和lastName标签合并为XML Ouput文件的name标签,将XML输入文件的address1、address2、city、state和pincode标签合并为XML Ouput文件的address标签。 我几乎转换了代码,但我在这里与empId作斗争。我已经在XSLT文件中手动输
我使用的是从这里下载的官方XSD模式: http://docs.oasis-open.org/ubl/os-UBL-2.0.zip (路径:xsd/maindoc/UBL-Order-2.0.xsd) 当我使用下面的命令用XJC生成java类时,我总是在控制台上得到一个错误,我不知道如何处理。 命令: 错误: 我尝试的是不使用普通的XSD,而是使用trang.jar.生成我自己的XSD。结果很好,
问题内容: 我有一个JSON文件,在此JSON文件中使用解析器将其转换为XML格式,然后写回xml文件 我在Groovy中找不到有关如何执行此操作的任何示例 如果我有如下所示的JSON: 然后,应将其转换为如下所示的XML: 我一直在寻找JSON到XML转换代码 问题答案: 如果您使JSON有效(将名称四舍五入,并且在初始块中加一个逗号),则可以执行此操作以将其转换(专门针对此示例) 我不知道将x
我有以下问题。我不是XSLT方面最伟大的专家,我想成功的是将一个XML从赛贝斯转换为以下内容: Sybase的输出: 我希望它的输出标题保持原样,条目部分不同 这是到目前为止我的XSLT(对不起,不太可能) 也许,有人可以帮我实现我想要的。非常感谢你。
问题内容: 我试图将JSON输出转换为XML。不幸的是我得到这个错误: JSON根对象具有多个属性。根对象必须具有单个属性才能创建有效的XML文档。考虑指定DeserializeRootElementName。 这就是我到目前为止所创建的。 这是我的JSON输出: 我怎么解决这个问题? 问题答案: 尽管问题中提供的JSON并不完整,但您在顶层具有多个属性,如异常所示。您必须为其定义根以获取有效的X
我有一个Apache camel应用程序,它在rest服务和web服务之间进行中介。Rest服务是调用方,web服务是后端。我已经取得了进展,直到我从web服务获得响应,并将其转换为XML。现在,我必须以特定的格式(例如,使用一些附加的事务和会话ID)向调用方发送JSON响应,从XML中提取数据。对此我有什么选择?是否有可用的工具可以使用XSD创建脚本化的JSON模板,或者我必须手动编写脚本?如果