当前位置: 首页 > 知识库问答 >
问题:

如何将XML/JSON文件转换为C#类?

林星华
2023-03-14

我有如下XML文件:

xml prettyprint-override"><?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>

如何快速将其转换为C#类以通过LINQ使用access数据?我必须为任何XML文件情况手动编写类吗?那么JSON格式呢?

共有1个答案

慕麒
2023-03-14

你有两种可能。

  1. 打开开发人员命令提示符
    您可以在开始菜单>程序>Microsoft Visual Studio 2012>Visual Studio工具中找到它,或者如果您有Windows8,可以在开始屏幕中键入开发人员命令提示符
  2. 通过键入cd/d“c:\path\to\XML”
  3. 将位置更改为XML文件目录
  4. 通过键入XSD file.xml
  5. 从xml文件创建XSD文件
  6. 通过键入xsd/c file.xsd
  7. 创建C#类

就这样!您已经从C:\path\到\xml\file.cs中的xml文件生成了C#类

    null
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());
        }
    }
}
    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>();

这里有一些在线XML<-->JSON转换器:单击

 类似资料:
  • 给我最好的方式来写代码。 如何在C#中将XML文件转换为CSV文件,只显示以下标记: 输出CSV文件格式应如下所示:

  • 问题内容: 我有以下XML文件,我需要在服务器中将其转换为JSON。最初,我认为我会将其转换为Dictionary,然后使用JavaScriptSerializer将其转换为JSON,但由于每列可能具有不同的值类型,所以我认为它不会起作用。有人在C#/ LINQ中做过类似的事情吗? 我需要保留每列的值类型(布尔,字符串,整数)。 我会很高兴就此提出任何建议,因为我刚刚开始使用XML。谢谢。 问题答

  • 问题内容: 我有一个想要表示为C#类的复杂JSON对象。我在名为“ Form”的父类上有一个良好的开端,但是如何代表不同类型的集合(请参见下面的“ elements”对象)? 这是JSON对象: 我开始的课程看起来像这样: 如何处理“ elements”属性以获得所需的JSON输出? 我正在WCF 4.0和web.config中的以下属性一起使用:automaticFormatSelectionE

  • 问题内容: 我试图将JSON输出转换为XML。不幸的是我得到这个错误: JSON根对象具有多个属性。根对象必须具有单个属性才能创建有效的XML文档。考虑指定DeserializeRootElementName。 这就是我到目前为止所创建的。 这是我的JSON输出: 我怎么解决这个问题? 问题答案: 尽管问题中提供的JSON并不完整,但您在顶层具有多个属性,如异常所示。您必须为其定义根以获取有效的X

  • 问题内容: 我有一个XML文件 我必须将此XML转换为CSV文件。我听说我们可以使用XSLT进行此类操作。如何在Java中(带有/不带有XSLT)执行此操作? 问题答案: 用伪代码: 这个快速的小循环将在每行的末尾写一个逗号,但是我敢肯定您可以弄清楚如何删除它。 为了实际解析XML,我建议使用JDOM。它具有非常直观的API。

  • 问题内容: 输入XML 输出Json 如何编写通用的xslt样式表,它将输入的xml转换为json 输入可能在根目录下有太多结果,在结果下可能有系统和名称,在系统下还有ID名称和值。 问题答案: 我从此处复制并粘贴的以下XSLT 应该可以帮助您将XML转换为JSON。谢谢 :)