【问题标题】:How to read key value from XML in C#如何在 C# 中从 XML 中读取键值
【发布时间】:2018-12-20 16:12:20
【问题描述】:

我有一个名为"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",它将返回 "Publish Resources to Custom Page",我想会打开XML 文件,然后它将读取。

请推荐!!

【问题讨论】:

  • 在发布问题之前请自己做一些基础研究,例如谷歌(读取 xml c#)...

标签: c# xml


【解决方案1】:

请尝试以下代码:

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

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      【解决方案3】:
      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();
      }
      

      【讨论】:

        【解决方案4】:
        return doc.Descendants("key")
                   .Where(c => ((String)c.Attribute("name")).Equals(search))
                   .Select(c => (String)c.Element("value"))
                   .FirstOrDefault()
                   .Trim();
        

        【讨论】:

          猜你喜欢
          • 2015-08-18
          • 2016-12-22
          • 2013-05-28
          • 2017-08-11
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多