2014-04-02 53 views
1

下一个2个节点我有下面的HTML代码表:如何获得在HTML + HTMLAgilitypack

<table style="padding: 0px; border-collapse: collapse;"> 
    <tr> 
     <td><h3>My Regional Financial Office</h3></td> 
    </tr> 
    <tr> 
     <td>&#160;</td> 
    </tr> 
    <tr> 
     <td><h3>My Address</h3></td> 
    </tr> 
    <tr> 
     <td>000 Test Ave S Ste 000</td> 
    </tr> 
    <tr> 
     <td>Golden Valley, MN 00000</td> 
    </tr> 
    <tr> 
     <td><a href="javascript:submitForm('0000','0000000');">Get Directions</a></td> 
    </tr> 
    <tr> 
     <td>&#160;</td> 
    </tr> 
</table> 

我怎样才能在未来2个<tr>标签的内部文本包含文本“的tablerow的后我的地址?”

+0

哪里?在代码隐藏或Javascript? – Vandesh

+0

在代码中,我希望输出是一个字符串=“000 Test Ave S Ste 000,Golden Valley,MN 00000”; – MT467

+0

你可以发布一些你试过的代码吗? – Vandesh

回答

0

您可以使用下面的XPath:

var htmlDoc = new HtmlDocument(); 
htmlDoc.LoadHtml(html); 
var tdOfInterests = 
     htmlDoc.DocumentNode 
       .SelectNodes("//tr[td/h3[.='My Address']]/following-sibling::tr[position() <= 2]/td"); 
foreach (HtmlNode td in tdOfInterests) 
{ 
    //given html input in question following code will print following 2 lines: 
    //000 Test Ave S Ste 000 
    //Golden Valley, MN 00000 
    Console.WriteLine(td.InnerText); 
} 

以上的XPath的关键是使用following-siblingposition()过滤器。

UPDATE:

有关XPath说明一下在这个答案中:部分选择<tr>元素

//tr[td/h3[.='My Address']] 

上面有:

  • <td>元素有子<h3>元素值等于 '我的地址'

/following-sibling::tr[position() <= 2] 

下一个部位选择以下<tr>当前<tr>元件(一个由上面的XPath部分选择)

/td 

最后部分选择子元件与位置< = 2 <td>元素来自当前<tr>元素

+0

作为魅力工作!谢谢,你能解释一下它的XPath吗? – MT467

+0

检查**更新**部分。找不到更好的解释方式,希望你明白。 – har07