gpt4 book ai didi

c# - LINQ to XML - 尝试通过元素的属性值选择元素列表

转载 作者:行者123 更新时间:2023-11-30 21:18:37 26 4
gpt4 key购买 nike

我正在尝试从 XML 文档中获取元素列表,其中的节点具有特定的属性值。该文档的结构如下:

<root>
<node type="type1">some text</node>
<node type="type2">some other text</node>
<node type="type1">some more text</node>
<node type="type2">even more text</node>
</root>

我想要的结果是 IEnumerable<XElement>包含 type="type1"的两个节点,例如

  <node type="type1">some text</node>
<node type="type1">some more text</node>

我正在使用 var doc = XDocument.Load(@"C:\document.xml"); 加载文档

我可以得到一个 IEnumerable<XAttribute>包含我要使用的节点的属性

var foo = doc.Descendants("node")
.Attributes("type")
.Where(x => x.Value == "type1")
.ToList();

但是,如果我尝试使用下面的代码获取包含这些属性的元素,我会得到一个 Object reference not set to an instance of an object.错误。我使用的代码是

var bar = doc.Descendants("node")
.Where(x => x.Attribute("type").Value == "type1")
.ToList();

如果能帮助我弄清楚为什么我没有得到预期的结果,我们将不胜感激。

最佳答案

如果节点缺少该属性,则可能会发生这种情况。尝试:

 var bar = doc.Descendants("node")
.Where(x => (string)x.Attribute("type") == "type1")
.ToList();

关于c# - LINQ to XML - 尝试通过元素的属性值选择元素列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4159411/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com