c# - 从单个嵌套 XElement 检索值的正确方法是什么?

标签 c# winforms linq-to-xml xelement

为了检索嵌套 XElement 的值,我的代码中有以下内容:

XElement xml = new XElement("UserDefinedSettings", new XElement("RootFolder", new XElement("FolderName", "User Input Goes Here")));

xml.Save("UserDefinedSettings.xml");

这让我将其保存到硬盘上:

<?xml version="1.0" encoding="utf-8"?>
<UserDefinedSettings>
  <RootFolder>
    <FolderName>User Input Goes Here</FolderName>
  </RootFolder>
</UserDefinedSettings>

稍后,要检索用户选择的文件夹的名称,我正在使用:

XDocument xdoc = XDocument.Load("UserDefinedSettings.xml");

var myVar = xdoc.Descendants("FolderName").Single();

textBox1.Text = myVar.Value;

我是 Linq-XML 新手,我想知道我所做的是否是正确的方法?

最初,我一直使用以下代码行来获取文件夹的名称,但我知道必须有更好的方法,在在这里搜索示例后,我改用上面的代码。

string s =xdoc.Element("UserDefinedSettings").Element("RootFolder").Element("FolderName").Value;

最佳答案

只要您确定这些元素存在,您所拥有的应该没问题(较新的方式)。但是,如果其中任何一个不存在,它就会面临抛出空引用异常的风险。我通常使用 Elements() 而不是 Element() 进行查询。 Elements() 返回一个 IEnumerable,您可以将其与更多 Elements() 查询(或其他查询)安全地链接在一起。例如,您可能会考虑:

var folder = (string)xdoc.Elements("UserDefinedSettings").Elements("RootFolder").Elements("FolderName").FirstOrDefault();

当我想要属性或元素的值时,我通常会做的另一件事是用字符串转换我的 XElements 和 XAttributes,就像我上面所做的那样。空值转换为字符串将返回空字符串,从而防止在 .Value 调用中出现空引用异常。

关于c# - 从单个嵌套 XElement 检索值的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13464368/

相关文章:

c# - 如何使用 iTextSharp 将 C# DataGridView 导出为 PDF,同时**维护自定义货币格式**?

wcf - 从 wcf 服务返回 xdocument

c# - 查询具有子属性的子元素

c# - linq读取xml文件

c# - C# 如何计算两个日期之间的月数

c# - 如何实现一个不简单封装字段的数组属性?

c# - 我如何在运行时统一更改光照贴图?

c# - 如何有条件地向 ASP.NET MVC 页面添加一些 CSS?

c# - 如何让命令的输出实时显示在窗体的控件中?

c# - 在 webbrowser 控件中释放显示的 pdf 文件