Загрузка xml в xdoc, а затем инициализация объекта - PullRequest
0 голосов
/ 09 марта 2010

Мой объект выглядит так:

public class Template
{
     public string Title {get;set;}
     public string Body {get;set;}
}

xml, который хранится в /files/test.xml в веб-приложении (в корне):

<nodes>
<template name="someKey">
  <node name="title">soem title</node>
  <node name="body">some body text here</node>
</template>
</nodes>

Так что я могу загрузить документ как:

XDocument doc = XDocument.Load(HttpContext.Current.Server.MapPath("~/files/test.xml"));

Теперь, как бы я загрузить объект из XML? (скажем, для шаблона с именем = somekey

Ответы [ 3 ]

1 голос
/ 09 марта 2010
var templates = doc.Elements("template")
.FirstOrDefault(template=>template.Attribute("name").Value.Equals("someKey")
.Select(template=>new Template
{
    Title =  template.Elements("node").FirstOrDefault(node=>node.Attribute("name").Value.Equals("title")).Value,
    Body = template.Elements("node").FirstOrDefault(node=>node.Attribute("name").Value.Equals("body")).Value
 });
0 голосов
/ 09 марта 2010

Если вы хотите перейти от XML-файла непосредственно к объекту, вы должны использовать сериализацию (особенно с классом XmlSerializer ).

Таким образом, вам не нужно создавать свое собственное решение для перехода от файла к объекту.

Посмотрите на примеры на странице XmlSerializer msdn, много хороших вещей о том, как это работает.

0 голосов
/ 09 марта 2010

Вы можете создать XSD (схему) для своего XML и, используя инструмент XSD.exe, создать класс, в котором ваш XML может быть десериализован в него.

Я не уверен, что это то, что вы хотели, но это определенно работает:)

...