C#如何填充从数据库使用XSD.EXE创建的类

C#如何填充从数据库使用XSD.EXE创建的类,c#,.net,xsd,xml-serialization,C#,.net,Xsd,Xml Serialization,通常,我会为我的web服务编写一个类并向其中添加XML序列化 [XmlRootAttribute(ElementName = "dsXmlSummary", IsNullable=true)] public class Class1 { //declare properties //make database calls to pull data and load properties } 我正在从事一个需要使用严格XSD的项目,我按照使用XSD.EXE工具创建基于XSD的类的

通常,我会为我的web服务编写一个类并向其中添加XML序列化

[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;
    }
  }
}
公共部分类dsXmlSummary{
专用dsXmlSummaryAdmin_reports_xmlReports[]项字段;
/// 
[System.Xml.Serialization.xmlementAttribute(“admin\u reports\u xmlReports”)]
公共dsXmlSummaryAdmin_报告_xmlReports[]项{
得到{
返回此.itemsField;
}
设置{
this.itemsField=值;
}
}
}

据我记忆所及,您可以获取数据集/数据表XML(ToString()?或可能是WriteXML)\ uu,不确定)。。然后使用这个

据我记忆所及,您可以获得数据集/数据表XML(ToString()?或者可能是WriteXML)u,不确定)。。然后使用这个

如果您从数据库中获取XML作为字符串,您可以使用。或者,如果您得到一个
字节[]
,您可以尝试一个


如果将XML作为字符串从数据库中获取,则可以使用。或者,如果您得到一个
字节[]
,您可以尝试一个


对不起,我的问题解释不清楚。我编辑了它,希望它现在更有意义。谢谢你的回复。啊哈。。对不起,我略过了你的问题。。不管怎样,我想阿尔宾的答案现在已经足够了对不起,我的问题解释不清楚。我编辑了它,希望它现在更有意义。谢谢你的回复。啊哈。。对不起,我略过了你的问题。。不管怎样,我想阿尔宾的答案已经足够了,我想这是我的问题。我知道如何从流到序列化…但是数据在数据库中不是XML结构。我编写了一个类,从数据库中提取数据,然后设置xml属性使该类本身可序列化…我只是不知道如何将其从类中获取到流。@jon3laze:Oops,忘了初始化第一个元素,更正了我的示例,再试一次。上面的代码示例中没有定义序列化程序。我就是这样让它工作的:var serializer=new System.Xml.Serialization.XmlSerializer(typeof(dsXmlSummary));我想这是我的问题。我知道如何从流到序列化…但是数据在数据库中不是XML结构。我编写了一个类,从数据库中提取数据,然后设置xml属性使该类本身可序列化…我只是不知道如何将其从类中获取到流。@jon3laze:Oops,忘了初始化第一个元素,更正了我的示例,再试一次。上面的代码示例中没有定义序列化程序。我就是这样让它工作的:var serializer=new System.Xml.Serialization.XmlSerializer(typeof(dsXmlSummary));
[WebMethod]
public dsXmlSummary getXML()
{
    TextReader reader = new StringReader("<dsXmlSummary><FirstName>Mark</FirstName></dsXmlSummary>");
    dsXmlSummary ds = (dsXmlSummary)serializer.Deserialize(reader);
    reader.Close();
}
[WebMethod]
public dsXmlSummary getXML()
{
    dsXmlSummary xml = new dsXmlSummary();
    xml.Items = new YourItemsType[1];    // <-- initialize here
    xml.Items[0] = new YourItemsType();  // <-- initialize first object
    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;
}