读取基于元素的XML节点?

时间:2011-12-10 06:39:42

标签: xml asp.net-mvc xmlnode

我有一个示例xml

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

使用标记名称(UserSettings)读取XML,如下所示。

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");

我如何根据元素“Source”直接阅读(m y以上的例子:通过传递设置/订阅来读取以匹配“Source”元素?)我知道它真正的基础知识,但真的很困惑!

2 个答案:

答案 0 :(得分:1)

使用Linq-XML(导入System.Xml.Linq名称空间)。

XDocument doc = XDocument.Load(filename);
string value = doc.Root.Element("Source").Value;

答案 1 :(得分:0)

我使用XmlDocument代替SelectSingleNode接受XPath表达式。以下是未经测试的:

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

编辑:

这是一个关于如何基于Source获取DestinationController的粗略示例。

XmlDocument doc = new XmlDocument();
strFileName = [...]
doc.Load(strFileName);
dctext=doc.SelectSingleNode("/UserSettings/[Source=\"Your desired source\"]/DestinationController").InnerText;