如何在Java中将JSON数组对象转换为XML时添加包装器

时间:2017-04-16 18:15:10

标签: java arrays json xml

我想将JSON数组转换为XML,但在转换过程中会生成无效的XML文件:

String str = "{ 'test' : [ {'a' : 'A'},{'b' : 'B'}]}"; 
JSONObject json = new JSONObject(str);
String xml = XML.toString(json);

我使用了Converting JSON to XML in Java

中建议的上述代码

但是,如果我尝试将JSON对象转换为XML,则会提供无效的XML(错误:The markup in the document following the root element must be well-formed.),这是

<test><a>A</a></test><test><b>B</b></test>

有人可以告诉我如何从JSON数组获取有效的XML或如何在转换为XML时包装JSON数组?

提前致谢。

1 个答案:

答案 0 :(得分:3)

XML文档只能有一个根元素。您的XML结果实际上是:

<test>
    <a>A</a>
</test>
<test>
    <b>B</b>
</test>

其中第二个test元素明显位于文档根元素结束标记之后。 XML.toString有一个很好的重载接受对象和字符串来包含结果XML:

final String json = getPackageResourceString(Q43440480.class, "doc.json");
final JSONObject jsonObject = new JSONObject(json);
final String xml = XML.toString(jsonObject, "tests");
System.out.println(xml);

现在输出XML格式正确:

<tests>
    <test>
        <a>A</a>
    </test>
    <test>
        <b>B</b>
    </test>
</tests>