我有这样的XML文件:
<?xml version="1.0"?>
<catalog>
<book id="1" date="2012-02-01">
<title>XML Developer's Guide</title>
<price>44.95</price>
<description>
An in-depth look at creating applications
with XML.
</description>
</book>
<book id="2" date="2013-10-16">
<author>Mark Colsberg</author>
<title>Dolor sit amet</title>
<price>5.95</price>
<description>Lorem ipsum</description>
</book>
</catalog>
Run Code Online (Sandbox Code Playgroud)
如何快速将其转换为C#类以使用LINQ的访问数据?我是否必须手动为任何XML文件案例编写类?JSON格式怎么样?
XSD是唯一的解决方案吗?
Dam*_*iel 58
你有两种可能性.
C:\path\to\xml\file.xml
Start Menu > Programs > Microsoft Visual Studio 2012 > Visual Studio Tools
或中找到它.如果您有Windows 8,只需在" 开始"屏幕中键入开发人员命令提示符即可cd /D "C:\path\to\xml"xsd file.xml xsd /c file.xsd就是这样!您已从xml文件生成C#类C:\path\to\xml\file.cs
Edit > Paste special > Paste XML As Classes
就是这样!
这个助手类的用法非常简单:
using System;
using System.IO;
using System.Web.Script.Serialization; // Add reference: System.Web.Extensions
using System.Xml;
using System.Xml.Serialization;
namespace Helpers
{
internal static class ParseHelpers
{
private static JavaScriptSerializer json;
private static JavaScriptSerializer JSON { get { return json ?? (json = new JavaScriptSerializer()); } }
public static Stream ToStream(this string @this)
{
var stream = new MemoryStream();
var writer = new StreamWriter(stream);
writer.Write(@this);
writer.Flush();
stream.Position = 0;
return stream;
}
public static T ParseXML<T>(this string @this) where T : class
{
var reader = XmlReader.Create(@this.Trim().ToStream(), new XmlReaderSettings() { ConformanceLevel = ConformanceLevel.Document });
return new XmlSerializer(typeof(T)).Deserialize(reader) as T;
}
public static T ParseJSON<T>(this string @this) where T : class
{
return JSON.Deserialize<T>(@this.Trim());
}
}
}
Run Code Online (Sandbox Code Playgroud)
你现在要做的就是:
public class JSONRoot
{
public catalog catalog { get; set; }
}
// ...
string xml = File.ReadAllText(@"C:\path\to\xml\file.xml");
var catalog1 = xml.ParseXML<catalog>();
string json = File.ReadAllText(@"C:\path\to\json\file.json");
var catalog2 = json.ParseJSON<JSONRoot>();
Run Code Online (Sandbox Code Playgroud)
这里有一些在线XML <--> JSON转换器:点击
| 归档时间: |
|
| 查看次数: |
21015 次 |
| 最近记录: |