使用XLinq,您似乎必須知道元素的子元素的確切名稱才能訪問特定的子元素。我想訪問/發現元素的直接子元素,但沒有這種緊密耦合。只有XElement的子節點
如果我有:
<根>
<級別1/>
<級別1/>
<級別1 >
<level2.1>
<level2.2>
< level2.2.1/>
</level2.2>
</1級>
< 1級/ >
< /根>
在尋找 「根」 的孩子,root.Elements()COUNT()返回7 - 我想4( 「1級」 節點)。如果我問root.Elements(「level1」),我得到4.但我必須知道子元素的名稱。
問題:如何在不知道元素名稱的情況下訪問直接的孩子?這將在XML樹中的任何遞歸點?
謝謝。
---新添加:代碼 --q1 == 7,Q2 == 8和Q3 == 4 但是,如果你通過Q3的元素進行迭代,您可以訪問所有的7子節點,而不是4我想要。如果這意味着只需要一個ElementAt(#),那很好。但是這個對象似乎在它所「看到」它的孩子之間有衝突。
XElement xel = new XElement(
new XElement("root",
new XElement("level1"),
new XElement("level1"),
new XElement("level1",
new XElement("level2.1"),
new XElement("level2.2",
new XElement("level2.2.1"))),
new XElement("level1")
));
var q1 = from x in xel.Descendants()
select x;
var q2 = from x in xel.DescendantsAndSelf()
select x;
var q3 = from x in xel.Elements()
select x;
foreach (XElement x in q3.Elements())
{
string s = x.ToString();
}
我想你沒有發佈你實際使用的XML:''只有4次。 –
svick
2011-05-29 18:34:11
您更新的XML無效,''未關閉。 –
svick
2011-05-29 18:39:11
序列'q3'確實只有4個元素。但是當你在帶有子元素的元素上使用'ToString()'時,它會打印整個元素,包括子元素。如果你使用'ElementAt()',你會得到相同的行爲。 – svick 2011-05-29 19:29:37