如何在C#中读取XML中的键值

我有一个名为"ResourceData.xml" xml格式文件。

    Publish Resources to Custom Page   

现在我想编写一个函数,它将键"name"作为输入并返回其value元素数据,在上面的例子中,如果我们传递键名"customPageTitle" ,它将返回"Publish Resources to Custom Page" "customPageTitle" ,我认为将打开XML文件,然后它将读取。

请建议!!

请尝试以下代码:

 public string GetXMLValue(string XML, string searchTerm) { XmlDocument doc = new XmlDocument(); doc.LoadXml(XML); XmlNodeList nodes = doc.SelectNodes("root/key"); foreach (XmlNode node in nodes) { XmlAttributeCollection nodeAtt = node.Attributes; if(nodeAtt["name"].Value.ToString() == searchTerm) { XmlDocument childNode = new XmlDocument(); childNode.LoadXml(node.OuterXml); return childNode.SelectSingleNode("key/value").InnerText; } else { return "did not match any documents"; } } } 

将文件加载到XDocument中。 用方法输入变量替换[input]。

 var value = doc.Descendants("key") .Where(k => k.Attribute("name").Value.Equals([input])) .Select(e => e.Elements("value").Value) .FirstOrDefault(); 

这是未经测试的代码,因此此代码段中可能存在错误。

 public static String GetViaName(String search, String xml) { var doc = XDocument.Parse(xml); return (from c in doc.Descendants("key") where ((String)c.Attribute("name")).Equals(search) select (String)c.Element("value")).FirstOrDefault(); } 
 return doc.Descendants("key") .Where(c => ((String)c.Attribute("name")).Equals(search)) .Select(c => (String)c.Element("value")) .FirstOrDefault() .Trim();