Обычно я пишу класс и добавляю в него сериализацию 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;
}
}
}