2011-02-17 75 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');