我有这个xml文件:
<objects>
<object>
<value>test</value>
</object>
<object>
<value>foo</value>
</object>
<object>
<value>bar</value>
</object>
</objects>
现在,我想查询这个xml,并检索value-element =“foo”中文本所在的所有对象元素
有一种简单的方法吗?
我尝试过这样的事情:
var objects = from e in xml.Elements("value")
where e.Value.Equals("foo", StringComparison.OrdinalIgnoreCase)
select e.parent;
这不起作用..
答案 0 :(得分:3)
我认为你正在寻找
xml.Descendants("value")
xml.Elements()只返回子元素...如果xml是你的根XDocument,它就不会返回任何内容。
答案 1 :(得分:1)
假设您从文档根目录查询,则应使用 xml.Descendants 。另外,我更喜欢使用 string.Equals 而不是 Equals 方法调用该元素的 Value 属性返回的字符串(仅作为一个偏好的问题。)例如:
var objects = from e in xml.Descendants("value")
where string.Equals(e.Value,
"foo",
StringComparison.OrdinalIgnoreCase)
select e.Parent;
答案 2 :(得分:0)
var objects = from e in xml.Descendants("object").Elements("value")
where e.Value.Equals("foo", StringComparison.OrdinalIgnoreCase)
select e.Parent;