遍历XDocument中的每个XElement

doo*_*osh 12 c# linq-to-xml

我有一个看起来像这样的XML:

<myVal>One</myVal>
<myVal>Two</myVal>
<myVal>Three</myVal>
<myVal>Four</myVal>
<myVal>Five</myVal>
Run Code Online (Sandbox Code Playgroud)

我想将其加载到XDocument中,然后遍历该XDocument中的每个XElement并计算每个元素中的字符数.

这样做的最佳方式是什么?

首先,我注意到我必须添加一个根元素,否则XDocument.Parse()将无法将其解析为XML.所以我补充说:

<span>
        <myVal>One</myVal>
        <myVal>Two</myVal>
        <myVal>Three</myVal>
        <myVal>Four</myVal>
        <myVal>Five</myVal>
</span>
Run Code Online (Sandbox Code Playgroud)

但是当我这样做时:

foreach (XElement el in xDoc.Descendants())
Run Code Online (Sandbox Code Playgroud)

el将包含整个XML,从第一个开始<span>,包括每个<myVal>s然后结束</span>.

如何<myVal>One</myVal>使用XDocument 迭代每个XML元素(等)?

我事先并不知道所有XML元素的名称,因此它们不会总是被命名为"myVal".

Ben*_*thy 17

使用doc.Root.Elements()(对于根节点的直接子节点,我认为它实际上是你想要的)或doc.Root.Descendants()(如果你想要每个后代,包括任何可能的子节点<myVal/>).