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

4
我有一个名为"ResourceData.xml"的xml格式文件,内容如下:
<?xml version="1.0" encoding="utf-8" ?>
<root>
  <key name="customPageTitle">
    <value>Publish Resources to Custom Page</value>
  </key>
</root>

现在我想编写一个函数,接受键值"name"作为输入,并返回其值元素数据,在上面的例子中,如果我们传递键名"customPageTitle",它将返回"发布资源到自定义页面"。我认为它将打开XML文件,然后读取其中的信息。请给予建议!

7
在发布问题之前,请先进行一些基本的研究,例如在谷歌上搜索(阅读XML C#)...请自行完成。 - Daniel Hilgarth
4个回答

9
请尝试以下代码:
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";
}

0

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

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

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


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

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接