通常我编写一个类并为其添加XML序列化以用于我的Web服务。C#如何填充使用数据库中的XSD.EXE创建的类
[XmlRootAttribute(ElementName = "dsXmlSummary", IsNullable=true)]
public class Class1
{
//declare properties
//make database calls to pull data and load properties
}
我上要求我使用了严格的XSD一个项目,我已经按照有关使用XSD.EXE工具来创建基于XSD类的指令。我的解释是,这个自动生成的类将取代我的正常序列化类。
如果是这种情况,我完全无法将数据加载到类属性中。 我已经通过收集从另一个散步:
[WebMethod]
public dsXmlSummary getXML()
{
TextReader reader = new StreamReader("data.xml");
dsXmlSummary ds = (dsXmlSummary)serializer.Deserialize(reader);
reader.Close();
}
但是我已经位于一个SQL数据库中的数据...我想我应该可以写一个方法来填补dsXmlSummary
类,但是我找不到任何文件。所有示例都如上所述,从实际的物理xml文档加载或读取。
我尝试测试了手动负载:
[WebMethod]
public dsXmlSummary getXML()
{
dsXmlSummary xml = new dsXmlSummary();
xml.Items[0].nameFirst = "Mark"; //error thrown here: System.NullReferenceException: Object reference not set to an instance of an object.
xml.Items[0].nameLast = "Twain";
xml.Items[0].Type = "Writer";
return xml;
}
很显然,我会对此完全错误的。任何指导非常感谢。
编辑
我的WebMethod
[WebMethod]
public dsXmlSummary getXML()
{
dsXmlSummary xml = new dsXmlSummary();
dsXmlSummaryAdmin_reports_xmlReports[] items = new dsXmlSummaryAdmin_reports_xmlReports[1];
items[0].nameFirst = "Mark"; //error still thrown here: System.NullReferenceException: Object reference not set to an instance of an object.
items[0].nameLast = "Twain";
items[0].Type = "Writer";
xml.Items = items;
return xml;
}
自动生成的类
public partial class dsXmlSummary {
private dsXmlSummaryAdmin_reports_xmlReports[] itemsField;
/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute("admin_reports_xmlReports")]
public dsXmlSummaryAdmin_reports_xmlReports[] Items {
get {
return this.itemsField;
}
set {
this.itemsField = value;
}
}
}
我想这是我的问题。我知道如何从流到序列化...但是,数据库中的数据不是以XML的形式构造的。我写了一个从数据库中提取数据的类,然后将类本身设置为可串行化,以设置xml属性...我只是不确定如何从类到流。 – jon3laze 2010-09-08 21:57:15
@ jon3laze:糟糕,忘了初始化第一个元素,纠正我的例子,再试一次。 – 2010-09-09 05:00:17