Я не могу понять, как это сделать, и я попытался использовать как можно больше доступных здесь тем.Проблема десериализации XML и присвоения значений
У меня есть следующий документ.
<?xml version="1.0"?>
<Root>
<Data>
<Package>
<GWT_></GWT_>
<ALT_></ALT_>
<SAT__></SAT__>
</Package>
<Package>
<GWT_></GWT_>
<ALT_></ALT_>
<SAT__></SAT__>
</Package>
</Data>
</Root>
Я написал классы и функцию, чтобы десериализировать все это.
Классы:
[Serializable()]
public class Package
{
[System.Xml.Serialization.XmlElement("GWT_")]
public string GWT_ { get; set; }
[System.Xml.Serialization.XmlElement("ALT_")]
public string ALT_ { get; set; }
[System.Xml.Serialization.XmlElement("SAT__")]
public string SAT__ { get; set; }
}
[Serializable()]
[System.Xml.Serialization.XmlRoot("Root")]
public class Root
{
[System.Xml.Serialization.XmlArray("Data")]
[System.Xml.Serialization.XmlArrayItem("Package", typeof(Package))]
public Package[] Package { get; set; }
}
И функция:
private void dataReportToolStripMenuItem_Click(object sender, EventArgs e)
{
OpenFileDialog openData = new OpenFileDialog();
openData.Filter = "Eta file|Data_*.dat
if (DialogResult.OK == openData.ShowDialog())
{
Package package = null;
string path = openData.FileName;
XmlSeriallizerSerializer(typeof(Root));
StreamReader reader = new StreamReader(path);
package = (Root)serializer.Deserialize(reader);
reader.Close();
}
}
Для запуска я получаю сообщение об ошибке, что он не может неявно преобразовать 'корень' в 'пакет'.
И мне нужен способ присвоить значения, которые читаются (например, GWT_ «значение»), чтобы сказать метку. Как вы можете видеть, существует несколько «пакетов» значений, поэтому мне нужна функция для переключения между этими пакетами.
Спасибо за помощь!
Вы пробовали serialising некоторые данные (фиктивные), чтобы убедиться, что у вас есть право атрибуты для создания XML? (Черт, это даже стоит делать это как единичный тест) –