如何在XDocument中循环使用c#
本文关键字:循环 XDocument | 更新日期: 2023-09-27 18:17:50
我的表和td值如下代码
foreach (var descendant in xmlDoc.Descendants("thead"))
{
var title = descendant.Element("td1 style=background:#cccccc").Value;
}
假设我在表
<thead>
<tr align="center" bgcolor="white">
<td1 style="background:#cccccc">Start</td1>
<td1 style="background:#cccccc">A</td1>
<td1 style="background:#cccccc">B</td1>
<td1 style="background:#cccccc">C</td1>
<td1 style="background:#cccccc">D</td1>
<td1 style="background:#cccccc">E</td1>
<td1 style="background:#cccccc">F</td1>
<td1 style="background:#cccccc">G</td1>
</tr>
</thead>
我需要得到所有的td1值
您对Element
的使用是不正确的-您只传递了名称,而不是元素声明的整个内容。
如果你想要所有的td1
元素,你想要这样:
foreach (var descendant in xmlDoc.Descendants("thead"))
{
foreach (var title in descendant.Element("tr")
.Elements("td1")
.Select(td1 => td1.Value))
{
...
}
}
如果您不需要thead
元素中的任何内容:
foreach (var title in descendant.Descendants("thead")
.Elements("tr")
.Elements("td1")
.Select(td1 => td1.Value))
{
...
}
(顺便说一下,你真的是指td1
而不是td
吗?)
如果您需要td1
元素,那么在这种情况下,您可以直接选择它们:
var titles = xdoc.Descendants("td1").Select(td => (string)td);
或者可以使用XPath
var titles = from td in xdoc.XPathSelectElements("//thread/tr/td1")
select (string)td;
注意如果你要解析html文档,那么最好考虑使用htmllagilitypack(可从NuGet获得)