Чтение узла XML на основе элемента? - PullRequest
0 голосов
/ 10 декабря 2011

У меня есть образец xml

<UserSettings>
   <Source>settings/subscriptions</Source>
   <DestinationController>UserSettings</DestinationController>
   <DestinationAction>GetUserPreferenceSettings</DestinationAction>
</UserSettings>

Чтение XML с использованием имени тега (UserSettings) выполняется, как показано ниже.

XmlDataDocument xmlDoc = new XmlDataDocument();
strFileName = System.Configuration.ConfigurationManager.AppSettings["UrlRoutingPath"].ToString();
strFileLocation = HttpContext.Current.Server.MapPath("~/" + strFileName);

xmlDoc.Load(strFileLocation);

XmlNodeList xmlNode = xmlDoc.GetElementsByTagName("UserSettings");

Как мне читать напрямую, основываясь на элементе «Источник» (пример для моего текста выше xml: читать, передавая настройки / подписки, чтобы соответствовать элементу «Источник»?) Я знаю его реальные основы, но действительно запутался!

Ответы [ 2 ]

1 голос
/ 10 декабря 2011

Использовать Linq-XML (импорт пространства имен System.Xml.Linq).

XDocument doc = XDocument.Load(filename);
string value = doc.Root.Element("Source").Value;
0 голосов
/ 10 декабря 2011

Вместо этого я бы использовал XmlDocument в сочетании с SelectSingleNode , который принимает выражение XPath .Следующее не проверено:

XmlDocument doc = new XmlDocument();
strFileName = [...]
doc.Load(strFileName);
sourcetext=doc.SelectSingleNode("/UserSettings/Source").InnerText;

Редактировать:

Вот грубый пример того, как получить DestinationController на основе Source.

...