我有以下XML文件,我需要在服务器中将其转换为JSON。最初,我认为我会将其转换为Dictionary,然后使用JavaScriptSerializer将其转换为JSON,但由于每列可能具有不同的值类型,所以我认为它不会起作用。有人在C#/
LINQ中做过类似的事情吗?
我需要保留每列的值类型(布尔,字符串,整数)。
我会很高兴就此提出任何建议,因为我刚刚开始使用XML。谢谢。
<Columns>
<Column Name="key1" DataType="Boolean">True</Column>
<Column Name="key2" DataType="String">Hello World</Column>
<Column Name="key3" DataType="Integer">999</Column>
</Columns>
using System;
using System.Linq;
using System.Web.Script.Serialization;
using System.Xml.Linq;
class Program
{
static void Main()
{
var xml =
@"<Columns>
<Column Name=""key1"" DataType=""Boolean"">True</Column>
<Column Name=""key2"" DataType=""String"">Hello World</Column>
<Column Name=""key3"" DataType=""Integer"">999</Column>
</Columns>";
var dic = XDocument
.Parse(xml)
.Descendants("Column")
.ToDictionary(
c => c.Attribute("Name").Value,
c => c.Value
);
var json = new JavaScriptSerializer().Serialize(dic);
Console.WriteLine(json);
}
}
产生:
{"key1":"True","key2":"Hello World","key3":"999"}
显然,这会将所有值视为字符串。如果要保留基础类型语义,可以执行以下操作:
using System;
using System.Linq;
using System.Web.Script.Serialization;
using System.Xml.Linq;
class Program
{
static void Main()
{
var xml =
@"<Columns>
<Column Name=""key1"" DataType=""System.Boolean"">True</Column>
<Column Name=""key2"" DataType=""System.String"">Hello World</Column>
<Column Name=""key3"" DataType=""System.Int32"">999</Column>
</Columns>";
var dic = XDocument
.Parse(xml)
.Descendants("Column")
.ToDictionary(
c => c.Attribute("Name").Value,
c => Convert.ChangeType(
c.Value,
typeof(string).Assembly.GetType(c.Attribute("DataType").Value, true)
)
);
var json = new JavaScriptSerializer().Serialize(dic);
Console.WriteLine(json);
}
}
产生:
{"key1":true,"key2":"Hello World","key3":999}
而且,如果您不能修改基础XML结构,则需要一个自定义函数,该函数将在您的自定义类型和基础.NET类型之间进行转换:
using System;
using System.Linq;
using System.Web.Script.Serialization;
using System.Xml.Linq;
class Program
{
static void Main()
{
var xml =
@"<Columns>
<Column Name=""key1"" DataType=""Boolean"">True</Column>
<Column Name=""key2"" DataType=""String"">Hello World</Column>
<Column Name=""key3"" DataType=""Integer"">999</Column>
</Columns>";
var dic = XDocument
.Parse(xml)
.Descendants("Column")
.ToDictionary(
c => c.Attribute("Name").Value,
c => Convert.ChangeType(
c.Value,
GetType(c.Attribute("DataType").Value)
)
);
var json = new JavaScriptSerializer().Serialize(dic);
Console.WriteLine(json);
}
private static Type GetType(string type)
{
switch (type)
{
case "Integer":
return typeof(int);
case "String":
return typeof(string);
case "Boolean":
return typeof(bool);
// TODO: add any other types that you want to support
default:
throw new NotSupportedException(
string.Format("The type {0} is not supported", type)
);
}
}
}
问题内容: 对于此测试XML页面,以下代码可以很好地运行: 但是,如何修改此代码以从此欧洲中央银行页面获取利率数据? 参考: http://www.fyneworks.com/jquery/xml-to-json/#tab-用法 使用JavaScript获取数据 问题答案: 请尝试以下方法。我已经在FF 3.6和Chrome 6上对其进行了测试,它可以正常工作。
XML输入文件: XML输入文件转换为XML输出文件。将XML输入文件的firstName、middleName和lastName标签合并为XML Ouput文件的name标签,将XML输入文件的address1、address2、city、state和pincode标签合并为XML Ouput文件的address标签。 我几乎转换了代码,但我在这里与empId作斗争。我已经在XSLT文件中手动输
我有如下XML文件: 如何快速将其转换为C#类以通过LINQ使用access数据?我必须为任何XML文件情况手动编写类吗?那么JSON格式呢?
我有一个C#winform应用程序,将文件保存到sqlserver数据库(2014)到VAR二进制(MAX)字段 功能保存 要检索的函数 这工作很好,现在我已经要求将数据库转换为XML,用于未连接到服务器的PC 转换为XML的函数 它工作正常,除了二进制文件,当 输出XML 当尝试将其转换回图像时,它会给我1kb的文件,字符串不是实际图像 二进制字段有特殊的转换吗? 非常感谢。 编辑问题解决感谢@
问题内容: 我想将输入的Excel文件转换为输出XML文件。 如果有人在Java中对如何获取输入Excel文件以及如何将XML写入输出有任何解决方案,请提供任何代码或URL或任何其他解决方案。 谢谢, 米沙尔·沙(Mishal Shah) 问题答案: 查看jexcel或Apache POI库以读取Excel文件。 创建XML文件很简单,只需将XML直接写到文件中,或附加到XML文档中,然后使用标准
我试图使用JAXB将ArrayList转换为xml... ...但它不工作,我得到这个错误: 2012年8月27日10:43:58组织。阿帕奇。卡塔琳娜。果心StandardWrapperValve:Servlet。路径为[/Spring3 LDAP WebService]的上下文中servlet[spring]的service()引发异常[请求处理失败;嵌套异常为javax.xml.bind.J