【问题标题】:JSON to XML using XSLT使用 XSLT 的 JSON 到 XML
【发布时间】:2014-12-17 14:57:09
【问题描述】:

我遇到了一个需求,我需要在 XSLT 的基础上将 JSON 数据转换成各种 XML 文档。 事实上,相同的 json 数据流向不同的系统,它们有自己的对象结构(属性嵌套级别等)来存储它。

我在 C# 中使用 XslCompiledTransform() 将 Xml 转换为 Json;现在看看是否有任何有效的方法可以将 JSON 转换为 XML 使用 XSLT

【问题讨论】:

  • 恐怕你的问题太宽泛了。此外,XSLT 可能是一个相当糟糕的选择,因为它旨在将 XML 文档转换为其他东西,而不是反过来。如果您已经在 C# 中找到了可行的解决方案,为什么还需要开始使用 XSLT?
  • @Mathias Müller:实际上,有一种情况是相同的 json 数据进入不同的系统,并且它们有自己的对象结构(属性嵌套级别等)来存储它。
  • 我认为我们需要更多详细信息才能为您提供帮助。由于 XSLT 将 xml 文档作为输入,因此您不应第一次调用将 JSON 转换为 XML。但是,如果您仍然需要,您可以使用虚拟 XML 文档(又名: 作为内容)作为 XSLT 的输入,并使用 XSLT 函数:unparsed-text($documentURI,$encodage) 来访问您的 JSON。但是您仍然需要以原始字符串的形式访问 JSON 数据的内容。

标签: c# xml json xslt


【解决方案1】:

撇开 XSLT 绝对不是 工作的正确工具这一事实不谈,如果我不得不这样做,这里有一个伪方法:

  • 在 C# 中创建一个执行实际工作的扩展函数,即获取 JSON 字符串作为参数,返回通用 XPathNodeIterator XML 块。
  • 通常使用 XSLT 处理结果以返回最终的自定义转换格式。

XSLT 看起来像这样(假设 XSLT 1.0,因为你在 C# 中):

<xsl:stylesheet version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:util="urn:JsonUtility.Converter"
>
    <!-- Supplied from environment -->
    <xsl:param name="json" />

    <xsl:template match="/">
        <xsl:variable name="xml" select="util:JSON2XML($json)" />

        <!-- Start processing the returned XML -->
        <xsl:apply-templates select="$xml/json" />
    </xsl:template>

    <xsl:template match="key">
        <!-- output -->
    </xsl:template>

    <xsl:template match="array">
        <!-- output -->
    </xsl:template>

    <!-- etc. -->

</xsl:stylesheet>

(或者,如果您在 C# 扩展中创建最终格式,您可以在根模板中执行 &lt;xsl:copy-of select="$xml" /&gt;。)

【讨论】:

    【解决方案2】:

    XSLT 是将一个 xml 文档转换为另一个 xml 文档,然而 json 甚至不是一个 xml 类型的文档..

    您可以编写一个简单的应用程序来传输格式

    【讨论】:

      【解决方案3】:

      我认为这行不通。 JSON 不是基于 XML 的,因此您不能在其上应用 XSLT 转换。 XML 转 JSON 可以,但 JSON 转 XML 不行

      编辑。我错了,检查这个:https://github.com/bramstein/xsltjson 和这个:How to convert json to xml using xslt

      【讨论】:

        猜你喜欢
        • 2010-11-27
        • 1970-01-01
        • 2013-08-15
        • 1970-01-01
        • 2021-03-29
        • 2019-09-09
        • 2020-01-26
        • 2023-03-30
        相关资源
        最近更新 更多