私の要件は、さまざまな HTML ページをダウンロードしてスクレイピングし、そのページで探しているオブジェクトの種類に応じて、ページ上のコードからオブジェクトのリストを抽出することです。たとえば、あるページには医師の手術の埋め込みリストが含まれ、別のページには主要な信頼のリストが含まれる場合があります。ページを 1 つずつ表示し、最終的に適切なオブジェクト タイプのリストを表示する必要があります。
これを行うために私が選択した方法は、ジェネリッククラスを呼び出すことです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 ブロックに対応する Surgery オブジェクトを抽出します。
私が抱えている問題は
各オブジェクト タイプのテンプレートを適切な方法で指定する方法がわかりません。それ以外
HTMLParser<Surgery> parser = new HTMLParser<Surgery>(new URI("...."), Surgery.Template);
は、少し不格好です。.NET 3.0/4.0 を使用してより良い方法を提案できる人はいますか?ジェネリックな方法で、HTML 文字列を取得し、XSD または XML テンプレート ドキュメントを取得して、ジェネリック タイプの構築されたオブジェクトのジェネリック リストを返す方法がわかりません。誰でもこれを行う方法を提案できますか?
最後に、非常に複雑に見え始めているため、ジェネリックがこの問題の正しい解決策であるとは確信していません。ここでの私の解決策の選択に同意しますか、それとも非難しますか? そうでない場合、代わりに何をしますか?