我想在动态URL中读取包含HTML文件的内容,并根据节点(HTML标记)将其读取为XML文件。这有可能吗?
我的意思是,有这个HTML代码:
<table class="bidders" cellpadding="0" cellspacing="0">
<tr class="bidRow4">
<td>kucik (automata)</td>
<td class="right">9 374 Ft</td>
<td class="bidders_date">2010-06-10 18:19:52</td>
</tr>
<tr class="bidRow4">
<td>macszaf (automata)</td>
<td class="right">9 373 Ft</td>
<td class="bidders_date">2010-06-10 18:19:52</td>
</tr>
<tr class="bidRow2">
<td>kucik (automata)</td>
<td class="right">9 372 Ft</td>
<td class="bidders_date">2010-06-10 18:19:42</td>
</tr>
<tr class="bidRow2">
<td>macszaf (automata)</td>
<td class="right">9 371 Ft</td>
<td class="bidders_date">2010-06-10 18:19:42</td>
</tr>
<tr class="bidRow0">
<td>kucik (automata)</td>
<td class="right">9 370 Ft</td>
<td class="bidders_date">2010-06-10 18:19:32</td>
</tr>
<tr class="bidRow0">
<td>macszaf (automata)</td>
<td class="right">9 369 Ft</td>
<td class="bidders_date">2010-06-10 18:19:32</td>
</tr>
<tr class="bidRow8">
<td>kucik (automata)</td>
<td class="right">9 368 Ft</td>
<td class="bidders_date">2010-06-10 18:19:22</td>
</tr>
<tr class="bidRow8">
<td>macszaf (automata)</td>
<td class="right">9 367 Ft</td>
<td class="bidders_date">2010-06-10 18:19:22</td>
</tr>
<tr class="bidRow6">
<td>kucik (automata)</td>
<td class="right">9 366 Ft</td>
<td class="bidders_date">2010-06-10 18:19:12</td>
</tr>
<tr class="bidRow6">
<td>macszaf (automata)</td>
<td class="right">9 365 Ft</td>
<td class="bidders_date">2010-06-10 18:19:12</td>
</tr>
</table>
我想将其解析为ListView(或Grid)以创建包含数据的行。所有tr都是不同的行,给定td中的所有td都是给定行中的一列。
而且我希望它尽可能快,因为它会在5秒内更新。
有没有这个库?
答案 0 :(得分:8)
我建议HTML Agility Pack。您必须自己处理GUI部分。它不需要有效的HTML,但会创建类似于XmlDocument的HtmlDocument。
答案 1 :(得分:0)
当然,这是可能的。但要注意 - 一个兼容的xml处理器应该将任何形式不正确的东西视为致命错误。这意味着它只能处理通过xhtml strict验证的文档。
答案 2 :(得分:0)
为什么不进行字符串替换以将HTML表转换为XML:
<table class="bidders" cellpadding="0" cellspacing="0">
变为:
<?xml version="1.0" encoding="UTF-8"?>
和
<tr class="bidRow4">
变为
<item>
和
<td class="right">
变为
<field1>
等
编辑1:
我认为DataSet类还有一个:
.ReadXML
方法,然后您可以数据绑定到该数据集:
DataSet ds = new DataSet();
ds.ReadXml("foo.xml");
DataGrid.DataSource = ds;
DataGrid.DataBind();
或类似的东西
答案 3 :(得分:0)
我通常会将Fast XPath Reader与LinqToXML结合使用。这是相当古老的(2007年)。
我不知道HTML Agility Pack,所以我不能说它是如何比较的(在性能和易用性方面)。