我遇到了从我的XML文件中获取所有标记的问题。在我的XML文件中,我有一个包含描述的选项标签。
<selection id="1">
<desc>You see a cat stuck up in a tree, do you</desc>
<option>
<desc goto_id="2">Help the cat</desc>
<desc goto_id="3">Leave the cat stuck in the tree</desc>
</option>
</selection>
我已经设法从选择中获取描述和ID,但是当我尝试在对象上创建一个数组时,它只会在我循环时获得第一个数组。
var selectionQueryNew = from selection in xml.Root.Descendants("selection")
select new {
Desc = selection.Element("desc").Value,
Id = selection.Attribute("id").Value,
Options = selection.Elements("option")
.Select(option => new {
Desc = option.Element("desc").Value
}).ToArray()
};
我认为.Select区域存在问题,为什么它只会从XML文件中选择第一个描述?
答案 0 :(得分:0)
您只看到第一个描述的原因是您的LINQ查询的这一部分:
Options = selection.Elements("option")
.Select(option => new {
Desc = option.Element("desc").Value
}).ToArray()
代码说得到所有名为&#34;选项&#34;从selection
中的集合中,然后从名为&#34;选项&#34;的元素集合中选择一个元素。你想要做的是获得&#34; desc&#34; &#34;选项&#34;下的元素:
var selectionQueryNew = from selection in xml.Root.Descendants("selection")
select new
{
Desc = selection.Element("desc").Value,
Id = selection.Attribute("id").Value,
Options = selection.Element("option").Elements("desc")
.Select(option => new
{
Desc = option.Value
}).ToArray()
};
在上面的代码中,对`selection.Element(&#34; option&#34;)返回的元素集合执行select。元素(&#34; desc&#34;),它捕获所有数组中的描述。