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