我的要求是下载和抓取各种 HTML 页面,根据我们在该页面上查找的对象类型从页面上的代码中提取对象列表。例如,一个页面可能包含一个嵌入的医生手术列表,另一个可能包含一个主要信任列表等。我必须逐页查看并最终得到适当对象类型的列表。
我选择这样做的方式是有一个名为的通用类HTMLParser<T> where T : IEntity, new()
IEntity
是所有可以被抓取的对象类型都将实现的接口,虽然我还没有弄清楚接口成员将是什么。
所以你可以有效地说
HTMLParser<Surgery> parser = new HTMLParser<Surgery>(URL, XSD SCHEMA DOC);
IList<Surgery> results = parser.Parse();
Parse()
将验证从 URL 下载的 HTML 字符串是否包含符合提供的 XSD 文档的块,然后以某种方式使用此模板提取一个List<Surgery>
手术对象,每个对象对应于 HTML 字符串中的一个 XML 块。
我遇到的问题是
我不确定如何以一种很好的方式为每种对象类型指定模板,除了
HTMLParser<Surgery> parser = new HTMLParser<Surgery>(new URI("...."), Surgery.Template);
有点笨拙。谁能建议使用 .NET 3.0/4.0 的更好方法?我不确定如何以通用方式获取 HTML 字符串、获取 XSD 或 XML 模板文档,并返回通用类型的构造对象的通用列表。谁能建议如何做到这一点?
最后,我不相信泛型是解决这个问题的正确方法,因为它开始看起来非常复杂。你会同意还是谴责我在这里选择的解决方案,如果不同意,你会怎么做?