2015-10-04 65 views
1

如何從第一個<tr bgcolor ..>中提取內部<tr>如何提取tr標籤?

<tr bgcolor="#FFF000"> 
    <div> 
    <table> 
     <tbody> 
      <tr height="10"> 
      ... 
<tr bgcolor="#FFF000"> 
    <div> 
    <table> 
     <tbody> 
      <tr height="10"> 
      ... 
... 

我試過到目前爲止但它返回所有內部<tr>

 nodelist = doc.DocumentNode.Descendants().Where 
      (x => (x.Name == "tr" && x.Attributes["height"] != null && x.Attributes["height"].Value.Contains("10"))).ToList(); 
+0

你使用XDocument或HtmlAgilityPack解析HTML? –

回答

1

您可以使用CsQuery(這是一個jQuery端口C#)。它使用CSS選擇器,所以你可以做這樣的事情:

var innerTr = dom.Select("tr[bgcolor='#FFF000'] tr").First(); 
0

tr不能成爲另一個tr後裔。我假設嵌套的標籤是td

nodelist = doc.DocumentNode.Descendants() 
    .First(x => x.Name == "tr" && x.Attributes.Contains("bgcolor")) 
    .Where(x => x.Descendants().Any(y => y.Attributes["height"] != null && x.Attributes["height"].Value.Contains("10"))) 
    .Select(x => x.Descendants()) 
    .ToList() 
0

您可以使用XPath這個

var tr = doc.DocumentNode.SelectSingleNode("//tr[@bgcolor='#FFF000']//tr[@height='10']");