我的表和td值如下代码
foreach (var descendant in xmlDoc.Descendants("thead"))
{
var title = descendant.Element("td1 style=background:#cccccc").Value;
}
假设我在表格中的thead下方
<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值
答案 0 :(得分:2)
您对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
吗?
答案 1 :(得分:1)
如果您需要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文档,那么最好考虑使用HtmlAgilityPack(可从NuGet获得)。