【问题标题】:Retrieve Value from Xml file C# [duplicate]从 Xml 文件 C# 中检索值 [重复]
【发布时间】:2018-02-15 07:16:32
【问题描述】:

我有一个包含以下行的 XML 文件

<string name="accept">Accept</string>
<string name="action_settings">Settings</string>
<string name="app_name">Val</string>

如何在 C# 中获取 app_name 字符串的值,即 Val。我尝试了 XML 解析器,但它不起作用。

【问题讨论】:

标签: c#


【解决方案1】:

您可以在 SelectSingleNode 方法中使用 XmlDocument 和 XPath 语句来检索此信息。这是一个例子:

XmlDocument doc = new XmlDocument();
doc.LoadXml(xml);
var accept = doc.SelectSingleNode("//string[@name='accept']").InnerText;
var actionSettings = doc.SelectSingleNode("//string[@name='action_settings']").InnerText;
var appName = doc.SelectSingleNode("//string[@name='app_name']").InnerText;

这里是 XPath 语法教程:https://www.w3schools.com/xml/xpath_syntax.asp

更新:@jon-skeet 建议使用 LINQ。如果您选择这样做,您的代码可能类似于:

var element = XElement.Parse(xml);
var accept = element.Descendants("string").Where(x => x.Attribute("name").Value == "accept").Select(x => x.Value).FirstOrDefault();
var actionSettings = element.Descendants("string").Where(x => x.Attribute("name").Value == "action_settings").Select(x => x.Value).FirstOrDefault();
var appName = element.Descendants("string").Where(x => x.Attribute("name").Value == "app_name").Select(x => x.Value).FirstOrDefault();

【讨论】:

  • 强烈鼓励使用 LINQ to XML 而不是 XmlDocument,并且仅在您真正需要时使用 XPath - 我认为这样做没有任何好处。结果是繁琐且容易出错的代码。
  • @JonSkeet LINQ 也可以正常工作,我已更新响应以包含该方法的代码示例。
猜你喜欢
  • 1970-01-01
  • 2016-05-19
  • 1970-01-01
  • 1970-01-01
  • 2017-06-06
  • 1970-01-01
  • 2020-08-20
  • 2020-04-07
  • 2023-03-08
相关资源
最近更新 更多