Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Json到XML工具?_Xml_Json - Fatal编程技术网

Json到XML工具?

Json到XML工具?,xml,json,Xml,Json,我有一个json文件,但我使用的应用程序只从xml文件导入数据。那么,有人知道一种将json文件转换为xml的工具吗?我一直在寻找这样的工具几个小时,只能找到从xml创建json文件的工具 谢谢 如果您使用的是.NET Framework,则可以在代码中执行此操作: 使用JsonReaderWriterFactory类在JSON内容上创建JSON读取器 创建一个常规的XmlWriter,并调用WriteNode,为其提供JSON读取器。它将写出对应于JSON的XML 注意事项: 这将使用M

我有一个json文件,但我使用的应用程序只从xml文件导入数据。那么,有人知道一种将json文件转换为xml的工具吗?我一直在寻找这样的工具几个小时,只能找到从xml创建json文件的工具


谢谢

如果您使用的是.NET Framework,则可以在代码中执行此操作:

  • 使用JsonReaderWriterFactory类在JSON内容上创建JSON读取器
  • 创建一个常规的XmlWriter,并调用WriteNode,为其提供JSON读取器。它将写出对应于JSON的XML
注意事项:

  • 这将使用Microsoft专有的JSON到XML映射(没有标准映射)。XML看起来会很奇怪
  • 在.NET3.5中有一些严重的bug阻止了这个场景。可能在.NET3.5SP1中修复,可能在4.0中修复,在Silverlight3中肯定修复

纯XSLT 2.0实现

<Smith>
   <First_Name>Mary</First_Name>
   <sex>Female</sex>
</Smith>
<Jackson>
   <First_Name>Jackie</First_Name>
   <sex>Female</sex>
</Jackson>
请从下面的列表中查看

使用此函数非常容易合并JSon并将其用作。。。XML

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

f:json-document($vstrParam)/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>

{
“老师”:{
“姓名”:
“波拉特先生”,
“年龄”:
"35",
“国籍”:
“哈萨克斯坦”
},
“类”:{
“学期”:
“夏天”,
“房间”:
无效的
“主题”:
“政治”,
“说明”:
“我们高兴,你高兴吗?”
},
“学生”:
{
“史密斯”:
{“名字”:“玛丽”,“性别”:“女性”},
“棕色”:
{“名字”:“约翰”,“性别”:“男性”},
“杰克逊”:
{“名字”:“杰基”,“性别”:“女性”}
}
,
“职系”:
{
“测试”:
[
{“等级”:“A”,“分数”:68,“等级”:“B”,“分数”:25,“等级”:“C”,“分数”:15},
{“等级”:“C”,“分数”:2,“等级”:“B”,“分数”:29,“等级”:“A”,“分数”:55},
{“等级”:“C”,“分数”:2,“等级”:“A”,“分数”:72,“等级”:“A”,“分数”:65}
]
}
}
将上述转换应用于任何XML文档(忽略)时,将生成正确的结果

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

玛丽
女性
杰基
女性

查看XSLT转换器的这个问题(非常酷):显然,JSON->XML转换的问题是JSON没有区分属性、值和子元素,因此没有一对一映射。