0

我有如下代码的表格和 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 值

4

2 回答 2

2

您的使用Element不正确 - 您只是传入一个name,而不是元素声明的全部内容。

如果你想要所有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顺便说一句?)

于 2013-06-11T15:50:52.533 回答
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 获得)。

于 2013-06-11T15:50:36.890 回答