问题描述
||
我试图制作我的第一个C#应用程序(它不仅可以说“ Hello world”,还可以做更多的事情),
现在html文件中有很多标签,(但下面只有两个h4标签。)
但是这是我感兴趣的部分:
<table width=\"100%\" height=\"400\" border=\"0\" align=\"center\" cellpadding=\"0\" cellspacing=\"0\" bordercolor=\"#111111\" background=\"images/page_bg.gif\" style=\"BORDER-COLLAPSE: collapse\">
<tbody valign=\"top\">
<tr>
<td>
<table width=\"80%\" border=\"0\" valign=top background=\"images/page_bg.gif\">
<tr>
<td>
<div align=\"center\">
<h4 align=\"center\">
<font face=\"Verdana,Arial,Helvetica,sans-serif\" size=\"2\">
<b>
<font size=\"4\" face=\"Arial,sans-serif\">
UNWANTED TEXT
</font></b></font></h4>
<p><br />
Name : {NAME HERE} <br>Number : {NUMBERS HERE}<br>Number2 : {NUMBERS2}<br><br><h4>UNWANTED TEXT</h4><br>detail NO. : <span class=style7>{NUmbers3}</span><br><br><a href=http://test.xom>UNWANTED TEXT</a><br><br>
</p>
<p class=\"content\"><em><strong>
<p> </p>
我希望得到NAME,Numbers1,Numbers2,Numbers3,所以,我想我必须做这样的事情=
//div[@align = \"centre\"]/h4/followingsibling::Text();
但是肯定是不完整的,关于如何执行的任何想法,我从firebug获得了Xpath:
/html/body/table/tbody/tr[2]/td/table/tbody/tr/td/table/tbody/tr[2]/td/div/table/tbody/tr/td/table/tbody/tr/td/div/h4
我也尝试过(只先获取原始数据,然后再进一步修剪)
HtmlNodeCollection node = doc.DocumentNode.SelectNodes(\"//table[@height=\'400\']//div[@align=\'centre\']\"//p);
foreach(HtmlNode node1 in node)
textBox1.Text += node1.InnerText;
但是这里的Node作为NULL传递
任何帮助是极大的赞赏。
解决方法
Firefox在表中添加了tbody标签(在原始html中可能没有此标签)。因此,我建议不要写所有路径,找到最具特征的路径并使用//。
例如,// div [@class = \'data \'] / table // tr / td
, 您是否注意到自己有
@align=\"centre\"
,但HTML却有align=\"center\"
(例如,英式拼写与美式拼写一样)?