从XSD可重复元素生成XML

时间:2016-07-20 15:33:43

标签: json xml xsd generator

什么是从xsd生成xml的工具,生成的xml应该包含多个可重复元素的条目?我尝试了eclipse上提供的工具和一些在线工具,如xml-generator,但这些都不起作用。它们都只为可重复元素生成一个条目。

注意:我想将生成的xml转换为json,但xml-json转换器只有在有多个条目时才将xml中的可重复元素视为数组。

1 个答案:

答案 0 :(得分:0)

从XSD生成XML可能非常具有挑战性,只是因为人们期望看到的内容可能无法被XSD捕获。

QTAssistant(我与之相关)在样本XML创建方面具有相当广泛的功能。

如果关联的maxOccurs大于1,那么最简单(和最笨)的(通过右键单击图形XSD可视化工具中的元素可用)仍然可以创建两个元素。

Sample XSD with Generate Sample XML File command

但是,XML可能已关闭:只是因为可能已经命名了字段dateTime,它并不意味着生成的文本节点将是有效的日期时间值,如果模式将其定义为字符串。该工具还将仅创建其中一个选项(如果您的架构使用xsd:choice)等。

Sample XML with repeating elements

QTAssistant可以使用额外的元数据,使用户可以对生成的样本进行最终控制。它甚至可以通过使用元数据项捕获的组合来创建数千个XML。 (如果您对这些情况感兴趣,请在支持网站上与我们联系)。

关于XML到JSON转换,QTAssistant还可以正确地将XML转换为JSON以用于重复字段。鉴于此XML:

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<!-- Sample XML generated by QTAssistant (http://www.paschidev.com) -->
<fundamo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:common="http://www.myorg.com/xsd/gen_fin">
    <response>
        <common:code>code1</common:code>
        <common:description>description1</common:description>
    </response>
    <transaction>
        <transactionRef>transactionRef1</transactionRef>
        <dateTime>dateTime1</dateTime>
        <userName>userName1</userName>
    </transaction>
</fundamo>

相应的JSON是:

{
    "response": {
        "code": "code1",
        "description": "description1"
    },
    "transaction": [
        {
            "transactionRef": "transactionRef1",
            "dateTime": "dateTime1",
            "userName": "userName1"
        }
    ]
}

您可能会注意到该事务是一个数组,即使XML只有这些元素中的一个。此转换适用于有效的XML,只要您为其所有内容定义了XSD即可。在过去2年多的时间里,我们一直在称它为#X; XSD感知JSON转换&#34;。也可以定义套管转换策略(例如,将大写字母改为小写字母,因为XML元素往往是大写字母,而JSON&#34; people&#34;更喜欢小写字母)。

如果您正在使用免费工具或编写自己的工具,我相信您可以使用免费评估作为灵感来源,仅解决您感兴趣的特定功能。