Как я могу импортировать элементы xml в объект? Мой код ниже не работает, он не работает в SetValue, и я не могу понять, почему.C# - XDocument/linq to object
Но даже тогда я подозреваю, что linq имеет гораздо более чистый способ сделать это, но я не могу найти примеров.
class Printers {
public List<Printer> list = new List<Printer>();
public Printers()
{
var xDoc = XDocument.Load(Properties.Settings.Default.XmlSetupPath).Root;
var xPrinters = xDoc.Element("printers").Elements();
foreach (var xPrinter in xPrinters)
{
var printer = new Printer();
foreach (var xEl in xPrinter.Elements())
{
printer.GetType().GetProperty(xEl.Name.ToString()).SetValue(printer, xEl.Value);
}
}
}
}
class Printer
{
public string name;
public string ip;
public string model;
public string infx86;
public string infx64;
public string location;
public string comment;
}
мой XML:
<printers>
<printer>
<name>my Printer</name>
<ip>192.168.100.100</ip>
<model>Brother</model>
<driver>ab</driver>
<infx86>ab\cd.INF</infx86>
<comment>Copycenter</comment>
</printer>
<printer>
<name>my Printer</name>
<foobar>oh no!</foobar>
</printer>
</printers>
Я хочу
Обратите внимание, что C# уже есть [класс 'XmlSerializer'] (http://msdn.microsoft.com/en-us/library/system.xml.serialization. xmlserializer.aspx). – Brian
Хотя Джон дал правильный ответ на мой вопрос, XmlSerializer - лучшее решение для меня. Простой пример: http://www.jonasjohn.de/snippets/csharp/xmlserializer-example.htm –