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

时间:2011-05-13 23:19:52

标签: c# xml

我正在用xsd.exe csxsd.exe和svcutil追逐我的尾巴。我必须遗漏一些基本的东西。我只想要具有基本属性和Lists或[]的基本对象。我错过了什么?

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

谢谢,

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

为什么要构建一个与您必须处理的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 ; }
  }

}