СитуацияXDocument шаблон XML из строки
Я использую XDocument для загрузки XML-файлы из множества различных источников. Все они содержат почти одинаковый тип информации, но структура XML очень отличается.
Это упрощенный пример того, что я делаю сегодня для одного источника:
string path = @"some_file.xml";
var doc = XDocument.Load(path);
var root = doc.Root;
foreach (var node in root)
{
User u = new User();
u.Name = node.Element("User").Element("Information").Attribute("Name").Value;
u.Description = node.Element("User").Element("Description").Value;
u.Edited = node.Element("User").Element("Description").Attribute("Edited").Value;
/* ...and so on. */
listOfUsers.add(u);
}
Это работает, но я хотел бы сделать его более динамичным. Как это происходит, у меня уже есть строки, содержащие точно, где искать мои свойства отформатированных, как это:
"Element:User->Element:Information->Attribute:Name"
"Element:User->Element:Description"
"Element:User->Element:Description->Attribute:Edited"
Это, например, говорит мне, где в структуре я нашел бы Name
, Description
и Edited
в данном файле XML ,
Мой вопрос
Есть ли способ, что я могу использовать эти строки, чтобы сказать XDocument, где искать? Другими словами, можно ли каким-либо образом динамически преобразовать приведенные выше строки в это?
u.Name = node.Element("User").Element("Information").Attribute("Name").Value;
u.Description = node.Element("User").Element("Description").Value;
u.Edited = node.Element("User").Element("Description").Attribute("Edited").Value;
То, что я пытался
я нашел то, что называется Отражение, что, кажется, сделать что-то подобное тому, что я пытаюсь сделать, но я не могу понять, как применять это моя проблема выше.
Возможно, есть и другие способы?
Я не уверен, но вы можете попробовать использовать [ 'Expressions'] (http://msdn.microsoft.com/en-us/library/system.linq.expressions (v = vs.110) .aspx) – Yuriy