使用linq to xml
获取元素中的多个数据项我有一个像这样的xml文件
<TopLevel>
<Inside>
Jibba
</Inside>
<Inside>
Jabba
</Inside>
</TopLevel>
我得到了说xml并希望获得所有元素。这是我的代码。
var q = from c in loaded.Descendants("TopLevel")
select (XElement)c.Element("Inside");
我试过c.Elements但是没有用。我需要做些什么才能获得所有内部元素?此代码只获取第一个“Inside”标记。
答案 0 :(得分:1)
这应该会给你"Jibba"
和"Jabba"
;您需要using
和System.Linq
的{{1}}指令:
System.Xml.Linq
或(不太具体,但仍然有效):
var q = from c in loaded.Descendants("TopLevel").Elements("Inside")
select c.Value;
或者如果你想对元素 var q = from c in loaded.Descendants("TopLevel").Elements()
select c.Value;
:
SelectMany
(如果您需要元素,而不是字符串,那么只需 var q = from c in loaded.Descendants("TopLevel")
from i in c.Elements("Inside")
select i.Value;
或select c;
- 删除select i;
)
答案 1 :(得分:0)
我需要更进一步,并不清楚如何做到这一点。谢谢你的跳跃点。这里有一些额外的水果来节省一些劳动力。
给出一些额外的xml乐趣:
<TopLevel>
<Inside ident="one">Jibba</Inside>
<Inside ident="two">Jabba</Inside>
<Inside ident="one">AlsoJibba</Inside>
<Inside ident="three">AlsoJabba</Inside>
</TopLevel>
我添加了一个where子句,用于查找父“TopLevel”中具有ident属性值为“one”的元素。
Dim query = From c In loaded.Descendants("TopLevel").Elements("inside")
Where c.Attribute("ident") = "one"
Select c.Value
然后做了一个小的演示控制台运行结果:
For each inside in query
Console.WriteLine(inside)
Next
哪个输出:
Jibba
AlsoJibba
扰乱警报提前:
现在,如果你复制粘贴我刚刚做的东西,而你正在使用VB,就像我一样,你有一个特别讨厌的细微差别。代码不起作用。请注意LINQ查询中的小部分“.Elements(”inside“).XML区分大小写.BV非常不区分大小写.C#用户请随意忽略我们的年轻人。只是想展示一个地方,一个问题。
马特