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

时间:2011-05-05 07:03:43

标签: c# xml

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

<?xml version="1.0" encoding="utf-8" ?>
<root>
  <key name="customPageTitle">
    <value>Publish Resources to Custom Page</value>
  </key>
</root>

现在我想编写一个以键"name"作为输入并返回其值元素数据的函数,在上面的情况下,如果我们传递键名{{1},它将返回"Publish Resources to Custom Page"我认为将打开XML文件然后它会读取。

请建议!!

4 个答案:

答案 0 :(得分:5)

请尝试以下代码:

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";
    }
  }
  return "No key value pair found";
}

答案 1 :(得分:0)

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

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

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

答案 2 :(得分:0)

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();
}

答案 3 :(得分:0)

return doc.Descendants("key")
           .Where(c => ((String)c.Attribute("name")).Equals(search))
           .Select(c => (String)c.Element("value"))
           .FirstOrDefault()
           .Trim();