2011-02-17 120 views
1

我有這個代碼如何選擇多個標籤

<div id="teste"> 
<table> 
<tbody> 
<tr> "Lots of HTML TAGS ex: img, href, etc" </tr> 
<tr> "Lots of HTML TAGS" </tr> 
<tr> "Lots of HTML TAGS" </tr> 
<tr> "Lots of HTML TAGS" </tr> 
</tbody> 
</table> 
</div> 

的TR裏面有很多的其他代碼.. 有時TR增加:前:1有5 TR |第2頁有8 TR

我想利用所有可在格「阿泰斯特」 - 表 - TBODY ...... 這是它裏面的TR ..

我想

doc.DocumentNode.SelectNodes("//div[@id='teste']/table/tbody/tr");

我想捕獲所有TR標籤,包括其他的HTML標記是TR內

這裏的代碼,在使用

<td align="left" class="portal_table_info_th"> 
    <div id="teste" style="display:inline;" class="smallfont"> 
     <table width="100%" border="0" cellspacing="2" cellpadding="0"> 
     <tbody> 

      <tr> 
      <td class="smallfont alt2"> 
      <b><center>TUTORIAL CSS</center></b> 
      </td> 
      <td width="30" class="smallfont"> 
      <span style="color:#000000; font-weight:bold">STATUS</span> 
      </td> 
      </tr> 


      <tr> 
      <td class="smallfont alt1"><center><a href="" target="_blank">Tutorial 1</a></center></td> 
      <td width="30" class="smallfont"><span style="color:#009933; font-weight:bold">ON</span></td> 
      </tr> 


      <tr> 
      <td class="smallfont alt2"><center><a href="" target="_blank">Tutorial 2</a></center></td> 
      <td width="30" class="smallfont"><span style="color:#009933; font-weight:bold">ON</span></td> 
      </tr> 


      <tr> 
      <td class="smallfont alt1"><center><a href="" target="_blank">Tutorial 3</a></center></td> 
      <td width="30" class="smallfont"><span style="color:#009933; font-weight:bold">ON</span></td> 
      </tr> 


      <tr> 
      <td class="smallfont alt2"><center><a href="" target="_blank">Tutorial 4</a></center></td> 
      <td width="30" class="smallfont"><span style="color:#009933; font-weight:bold">ON</span></td> 
      </tr> 


      <tr> 
      <td class="smallfont alt1"><center><a href="" target="_blank">Tutorial 5</a></center></td> 
      <td width="30" class="smallfont"><span style="color:#009933; font-weight:bold">ON</span></td> 
      </tr> 

     </tbody> 
    </table> 
    </div> 
</td> 

下面是其他的信息...... 當我把

doc.DocumentNode.SelectNodes("//div[@id='teste']/table/tbody/tr"); 

不工作,返回一個空值。 但是當我把

doc.DocumentNode.SelectNodes("//div[@id='teste']"); 

其工程...:/,但需要所有的標籤。

我嘗試用這個和我的文檔是 - (該數據是HTTPGET)

doc = new HtmlDocument(); 
doc.LoadHtml(data); 
. 
. 
. 
HtmlNodeCollection trtag = doc... 
string trtag = doc... 
+0

感謝大家幫助我! – 2011-02-17 19:22:45

回答

1

兩個問題:

1)周圍添加了ID值引號,否則它不會是一個有效的XML標記,即id =「teste」(這是問題的第一個原因,一旦更改,您將獲得節點)

2)刪除*。

doc.DocumentNode.SelectNodes("//div[@id='teste']/table/tbody/tr"); 

應該工作..

編輯: 提取所有TR節點除了最後一個使用XPath "//div[@id='teste']/table/tbody/tr[position()<last()]"(注意[位置())

的樣品,以提取節點並轉換爲字符串。

static void ExtractNodeInfo() 
     { 
      String xmlText = @"<div id=""teste""> <table> <tbody> <tr> ""Lots of HTML TAGS ex: img, href, etc"" </tr> <tr> ""Lots of HTML TAGS"" </tr> <tr> ""Lots of HTML TAGS"" </tr> <tr> Last ""Lots of HTML TAGS"" </tr> </tbody> </table> </div> "; 
      XmlDocument doc = new XmlDocument(); 
      doc.LoadXml(xmlText); 
      XmlNode root = doc.DocumentElement; 
      XmlNodeList nodes = root.SelectNodes("//div[@id='teste']/table/tbody/tr[position()<last()]"); 
      StringBuilder selectedNodesOuter = new StringBuilder(); 
      StringBuilder selectedNodesInner = new StringBuilder(); 
      foreach(XmlNode node in nodes) 
      { 
       selectedNodesOuter.Append(node.OuterXml); 
       selectedNodesInner.Append(node.InnerXml); 
      } 
      Console.WriteLine("######### OUTER XML #########"); 
      Console.WriteLine(""); 
      Console.WriteLine(selectedNodesOuter); 
      Console.WriteLine(""); 
      Console.WriteLine("######### INNER XML #########"); 
      Console.WriteLine(""); 
      Console.WriteLine(selectedNodesInner); 
     } 
+0

仍然沒有工作...我收到價值=零....我想採取所有TR標籤...和其他TAG裏面太... – 2011-02-17 16:26:26

+0

更新後..請檢查.... – Chandu 2011-02-17 16:30:00

+0

Srry。 .. ID中有引號..我忘了把.. – 2011-02-17 16:35:36

0

彌敦道您可以使用千周的XPath測試儀網上之一:http://www.futurelab.ch/xmlkurs/xpath.en.html這可以讓你快速地檢查你得到了什麼,只要你改變你的XPath查詢,快於等待在這裏的答案:)

0

什麼錯:

trArray=document.getElementById('teste').getElementsByTagName('tr'); 

,這將給你所有的TR的數組(假設有長途限制內沒有表),如果你想找到標籤

那麼你可以做點像

tagArray=trArray[0.getElementsByTagName('img');