将xml转换为JSON和将JSON转换为xml的库

4

我需要将一个以xml格式编写的文档转换成JSON,反之亦然。

我相信这是一个常见的需求,也许还有一个库可以完成这项工作。

您知道任何相关的库吗?


好问题(+1)。请查看我的答案,其中提供了一种可用的 XSLT 解决方案,可以直接从 XSLT 转换访问 JSON 到 XML。 - Dimitre Novatchev
@nabo:它是否重要是用C#编写的?如果它是用VB.NET编写的,但你可以从C#或任何其他.NET语言调用它,那又怎样呢? - John Saunders
@John Saunders - 您是对的,我会删除C#标签。它可以是任何语言,因为我可以导入一个dll在C#中使用。 - Nabo
@nabo:我已经编辑过了,去掉了"C#"。那只是一个“提示”,让你知道最好不要这样做。 - John Saunders
3个回答

1

不是C#,而是纯XSLT 2.0实现,将JSON对象转换为XML文档:

请查看{{link1:f:json-document()}}来自{{link2:FXSL 2.x库}}。

使用此函数可以非常轻松地将JSon合并并将其用作... XML。

例如,只需编写以下XPath表达式:

f:json-document($vstrParam)/Students/*[sex = 'Female']

获取所有 Students 的子元素,其中 sex = 'Female'

以下是完整示例:

<xsl:stylesheet version="2.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
 xmlns:xs="http://www.w3.org/2001/XMLSchema"
 xmlns:f="http://fxsl.sf.net/"
 exclude-result-prefixes="f xs"
 >
 <xsl:import href="../f/func-json-document.xsl"/>

 <xsl:output omit-xml-declaration="yes" indent="yes"/>

 <xsl:variable name="vstrParam" as="xs:string">
{

  "teacher":{
    "name":
      "Mr Borat",
    "age":
      "35",
    "Nationality":
      "Kazakhstan"
             },


  "Class":{
    "Semester":
      "Summer",
    "Room":
      null,
    "Subject":
      "Politics",
    "Notes":
      "We're happy, you happy?"
           },

  "Students":
    {
      "Smith":
        {"First Name":"Mary","sex":"Female"},
      "Brown":
        {"First Name":"John","sex":"Male"},
      "Jackson":
        {"First Name":"Jackie","sex":"Female"}
    }
    ,


  "Grades":

    {
      "Test":
      [
        {"grade":"A","points":68,"grade":"B","points":25,"grade":"C","points":15},

        {"grade":"C","points":2, "grade":"B","points":29, "grade":"A","points":55},

        {"grade":"C","points":2, "grade":"A","points":72, "grade":"A","points":65}
       ]
    }


}
 </xsl:variable>

 <xsl:template match="/">
    <xsl:sequence select=
     "f:json-document($vstrParam)/Students/*[sex = 'Female']"/>

 </xsl:template>
</xsl:stylesheet>

当对任何XML文档(忽略)应用上述转换时,将产生正确的结果

<Smith>
   <First_Name>Mary</First_Name>
   <sex>Female</sex>
</Smith>
<Jackson>
   <First_Name>Jackie</First_Name>
   <sex>Female</sex>
</Jackson>

0

看看Json.NET吧。这是一个非常棒的库,很容易入门。


0

我不确定如何从JSON转换为XML,但我们在CMS中使用此XML到JSON XSL模板非常有效,该CMS基于XML,可以方便地重用现有的XML结构用于AJAX应用程序。

http://code.google.com/p/xml2json-xslt/


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接