这是我的XML
Dim X = <BODY>
<HEAD1>
<Eyes>BLUE</Eyes>
</HEAD1>
<HEAD2>
<Eyes>BROWN</Eyes>
</HEAD2>
</BODY>
到目前为止,我设法获得了HEAD部件。 现在我如何在HEAD部分内进行迭代?
Dim HEADS = From element In X.Elements Select element.Name.LocalName
For Each c In HEADS
Dim Local As String = c
Dim COLORSofEYES = SELECT child nodes WHERE c 'Something like that i guess
Next
上面应该在第一次迭代时返回
<Eyes>BLUE</Eyes>
为ElementNodeType,第二个<Eyes>BROWN</Eyes>
答案 0 :(得分:1)
以下代码(在C#中):
var x = XElement.Parse(
@"<BODY>
<HEAD1> <Eyes>BLUE</Eyes> </HEAD1>
<HEAD2> <Eyes>BROWN</Eyes> </HEAD2> </BODY>");
foreach(var head in x.Elements())
{
Console.WriteLine("head: {0}, eyes' colour: {1}", head.Name.LocalName, head.Element("Eyes").Value);
}
将产生以下输出:
head: HEAD1, eyes' colour: BLUE
head: HEAD2, eyes' colour: BROWN
我理解的是你想要的。
答案 1 :(得分:0)
Dim COLORSofEYES = From d In X.Descendants(Local).Descendants Select d
答案 2 :(得分:0)
这是一种奇怪的格式。我不确定你想要迭代到底是什么。如果您只想迭代所有<Eyes>
,您可以这样做:
Dim query = X...<Eyes>
否则,如果您只想获得每个<HEAD...>
的所有孩子,您可以这样做:
Dim query = X.Elements.SelectMany(Function(e) e.Elements)
或者使用XPath:
Dim query = X.XPathSelectElements("/*/*")
答案 3 :(得分:0)
您可以在单个LINQ查询中编写它
C#
中的
IEnumerable<XElement> de = from p in xmlTree.Elements().Elements()
select p;
输出
<Eyes>BLUE</Eyes>
<Eyes>BROWN</Eyes>
希望我能正确回答你的问题。
注意:在您的情况下,您也可以使用Descendants
Descendants: yield entire child and sub-tree
Elements : yield through only through your child