您好我制作HttpWebResponse并获取HtmlPage以及我需要的所有数据,例如带有日期信息的表,我需要将它们保存到数组列表并将其保存到xml文件
html页面的示例
<tbody>
<tr class="odd">
<tr class="even">
<td class="padding5 sorting_1">
<span class="DateHover" sort="14/03/18/22/56" title="18.03.14" ref="18.03.14">18.03.14</span>
</td>
<td class="CellStyleDefaultText">
<span class="transSpan">Info</span>
</td>
<td class="CellStyleDefaultText" title="UserNumber123">UserNumber123</td>
<td class="CellStyleSignedNumber floatopHomePage">
<span title="701,554.23 ">701,554.23 </span>
</td>
<td class="CellStyleAmount CellStyleAmountNew">
<div title="-3354999.71">-3354999.71</div>
</td>
<td class="CellStyleDetails CCMoreDetailsTd">
<span> 17.03.14 Info</span>
</td>
</tr>
</tbody>
好了第一次使用dateTime我得到了
foreach (HtmlNode node in doc.DocumentNode.SelectNodes("//span[@class='DateHover']"))
跨越信息
foreach (HtmlNode node in doc.DocumentNode.SelectNodes("//td[@class='transSpan']"))
然后我坚持得到UserNumber123我做了这个
foreach (HtmlNode node in doc.DocumentNode.SelectNodes("//td[@class='CellStyleDefaultText']"))
但它返回我的跨度transSpan,因为它在td
和所有其他td CellStyleSignedNumber,CellStyleAmount,CellStyleDetails我无法得到。
有什么想法吗?
答案 0 :(得分:3)
您可以简单地提及属性名称以选择具有特定属性集的元素。因此,您可以尝试以这种方式获取UserNumber123
:
doc.DocumentNode.SelectNodes("//td[@class='CellStyleDefaultText' and @title]")
高于XPath意味着,选择具有title属性的<td>
元素,并且hass类属性值等于'CellStyleDefaultText'。
对于其余的<td>
,请尝试使用XPath contains()
函数,例如:
doc.DocumentNode.SelectNodes("//td[contains(@class,'CellStyleSignedNumber')]")
更新:
回复评论的后半部分,如果您打算获得具有子<td>
元素的<span>
,则可以添加以下简单条件:
doc.DocumentNode.SelectNodes("//td[span and contains(@class,'CellStyleSignedNumber')]")