如何从简单的XML中获取简单的c#类?

如何从简单的XML中获取简单的c#类?,c#,xml,C#,Xml,我正在用xsd.exe csxsd.exe和svcutil追踪我的尾巴。我一定错过了一些基本的东西。我只想要具有基本属性和列表或[]的基本对象。我错过了什么 我得到的xsd过于复杂,对象不包括列表或数组 谢谢,您需要一个.xsd(模式文件)来与xsd.exe/classes一起使用。如果没有.xsd文件,可以使用工具生成一个。大多数工具假定数据类型为字符串,如果您不喜欢,可以调整生成的架构。为什么要构建一个与您必须处理的XML匹配的类,并用XML序列化属性标记它以控制它的序列化。它[可以]简单到

我正在用xsd.exe csxsd.exe和svcutil追踪我的尾巴。我一定错过了一些基本的东西。我只想要具有基本属性和列表或[]的基本对象。我错过了什么

我得到的xsd过于复杂,对象不包括列表或数组


谢谢,

您需要一个.xsd(模式文件)来与
xsd.exe/classes
一起使用。如果没有.xsd文件,可以使用工具生成一个。大多数工具假定数据类型为字符串,如果您不喜欢,可以调整生成的架构。

为什么要构建一个与您必须处理的XML匹配的类,并用XML序列化属性标记它以控制它的序列化。它[可以]简单到:

using System.IO;
using System.Xml.Serialization;

namespace AnXmlSample
{

  class Program
  {
    static void Main( string[] args )
    {
      string xml = @"<document id='3'>
                       <name>
                         document name
                       </name>
                       <foo widget-id='12' >
                         The quick brown fox jumped over the lazy dog
                       </foo>
                     </document>" ;
      StringReader sr = new StringReader(xml) ;
      XmlSerializer serializer = new XmlSerializer(typeof(MyDataFromXml)) ;
      MyDataFromXml instance = (MyDataFromXml) serializer.Deserialize( sr ) ;

      return ;
    }
  }

  [XmlRoot("document")]
  public class MyDataFromXml
  {
    [XmlAttribute("id")]
    public int Id { get ; set ; }

    [XmlElement("name")]
    public string Name { get ; set ; }

    [XmlElement("foo")]
    public Widget Foo { get ; set ; }

  }

  public class Widget
  {
    [XmlAttribute("widget-id")]
    public int id { get ; set ; }

    [XmlText]
    public string Content { get ; set ; }
  }

}
使用System.IO;
使用System.Xml.Serialization;
名称空间AnXmlSample
{
班级计划
{
静态void Main(字符串[]参数)
{
字符串xml=@“
文件名
那只敏捷的棕色狐狸跳过了那只懒狗
" ;
StringReader sr=新的StringReader(xml);
XmlSerializer serializer=新的XmlSerializer(typeof(MyDataFromXml));
MyDataFromXml实例=(MyDataFromXml)序列化程序。反序列化(sr);
返回;
}
}
[XmlRoot(“文档”)]
公共类MyDataFromXml
{
[XmlAttribute(“id”)]
公共int Id{get;set;}
[XmlElement(“名称”)]
公共字符串名称{get;set;}
[XmlElement(“foo”)]
公共小部件Foo{get;set;}
}
公共类小部件
{
[XmlAttribute(“小部件id”)]
公共int id{get;set;}
[XmlText]
公共字符串内容{get;set;}
}
}

那么您是从一个XML文件开始的?我想你是在基于内容生成一个XSD,然后使用XSD.exe生成C#类?如果是这样的话,您是否可以花时间按照您想要的方式标记XSD?有了多个级别的代码生成,您会得到……有趣的……结果,这并不奇怪。所以。。。我已经使用xsd.exe生成了一个xsd,但是下一步生成类的结果远远不是一个简单的c#类,它的属性和表示子对象集合的属性,就像在xml中一样。我的经验是,当我查看由
xsd.exe
生成的代码时,“简单”不是一个通常出现在脑海中的形容词。