【发布时间】:2016-05-19 10:20:33
【问题描述】:
我有这个 XML 标记:
<preferences>
<section name="PREF_SECTION_NAME_1">
<preference name="PREF_EXAMPLE_1" type="text">
<default value="false"></default>
</preference>
<preference name="PREF_EXAMPLE_2" type="radio">
<default value="true"></default>
</preference>
<preference name="PREF_EXAMPLE_3" type="radio">
<default value="false"></default>
</preference>
</section>
<section name="PREF_SECTION_NAME_2">
<preference name="PREF_EXAMPLE_4" type="radio">
<default value="true"></default>
</preference>
<preference name="PREF_EXAMPLE_5" type="radio">
<default value="false"></default>
</preference>
<preference name="PREF_EXAMPLE_6" type="radio">
<default value="true"></default>
</preference>
</section>
</preferences>
我想获取 Preference 属性名称 = "PREF_EXAMPLE_2" 时的默认值
我知道了:
var t = from p in xDocUser.Descendants("preference").Attributes("name").Where(d=>d.Value==preferencename) select p;
这给了我偏好的属性,但不是它的孩子。
请问我该怎么做?
【问题讨论】:
-
其实它只是给你属性,而不是元素。目前还不清楚您要达到什么目的,或者为什么要使用只是
from p in (some stuff) select p的查询表达式。 -
@JonSkeet 嗨,乔恩,感谢您的评论。我想从 xDocument 获取 Preference 属性名称 = "PREF_EXAMPLE_2" 时的默认值。您是否建议不要使用 linq?
-
我应该添加我正在将 xml 文档加载到 xDocument 中。您是否还建议我应该坚持使用 xml selectnodes 等?谢谢
-
不,我不是建议您不要使用 LINQ - 但我建议您不要使用无意义的查询表达式。要么使用有意义的查询表达式(例如使用
where子句),要么只使用基于 lambda 的方式。
标签: c# linq linq-to-xml