【问题标题】:Parsing JSON object to XML将 JSON 对象解析为 XML
【发布时间】:2018-10-30 23:46:23
【问题描述】:

我正在尝试找出将 JSON 对象自定义解析为 XML 文档的最佳方法。

鉴于以下 JSON(我使用 JSON.org):

{"CfgAccessGroup":{"CfgGroup":{"capacityRuleDBID":{"value":0},"DBID":{"value":97},"siteDBID":{"value":0},"name":{"value":"EVERYONE"},"quotaTableDBID":{"value":0},"contractDBID":{"value":0},"state":{"value":1},"capacityTableDBID":{"value":0},"tenantDBID":{"value":1}},"xmlns":"http://schemas.genesyslab.com/Protocols/Configuration/ConfServer/2005/","type":{"value":6},"memberIDs":{"CfgID":[{"CSID":{"value":0},"DBID":{"value":5195},"type":{"value":3}},{"CSID":{"value":0},"DBID":{"value":12854},"type":{"value":3}},{"CSID":{"value":0},"DBID":{"value":12863},"type":{"value":3}},{"CSID":{"value":0},"DBID":{"value":5808},"type":{"value":3}}]}}}

我尝试通过以下方式将 JSON 重新转换为 XML:

DocumentBuilder db = DocumentBuilderFactory.newInstance().newDocumentBuilder();
            Document doc = db.parse(new InputSource(new StringReader(XML.toString(object))));

但是,输出是:

<CfgAccessGroup>
    <CfgGroup>
        <capacityRuleDBID>
            <value>
            0
            </value>
        </capacityRuleDBID>
        ...
    <CfgGroup>
</CfgAccessGroup>

我需要它:

...
<capacityRuleDBID value=0 />
...

老实说,我真的不知道从哪里开始。

【问题讨论】:

标签: java json xml


【解决方案1】:

如果您想对生成的 XML 的元素和属性进行细粒度控制,一种选择是使用 XSLT 转换。

【讨论】:

  • 同意。没有现成的 JSON 到 XML 转换库总是会为您提供所需的确切 XML。有些人比其他人提供更多的控制权,但最终,如果您确切知道自己想要什么,那么您将不得不进行一些编码;最实用的方法是获取库方法的输出,然后应用 XSLT 对其进行转换。 (因此,一种方法是使用 XSLT 3 json-to-xml() 方法作为第一步,然后进行自定义转换)。
猜你喜欢
  • 1970-01-01
  • 2021-05-16
  • 2016-12-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多