4

私は数千 (ASP.net - 乱雑な html) html で生成された請求書を解析してデータベースに保存しようとしています。

基本的に次のように:

 foreach(var htmlDoc in HtmlFolder)
 {
   foreach(var inputBox in htmlDoc)
   { 
      //Make Collection of ID and Values Insert to DB
   }
 }  

私が読んだ他のすべての質問から、このタイプの問題に最適なツールはHtmlAgilityPackですが、私の人生では、ドキュメントの .chm ファイルを機能させることができません。Agility Pack の有無にかかわらず、これをどのように達成できるかについてのアイデアはありますか?

前もって感謝します

4

4 に答える 4

4

HtmlAgilityPack の新しい代替手段はCsQueryです。相対的なパフォーマンスのメリットについては、このの質問を参照してください。ただし、CSS セレクターの使用に勝るものはありません。

var doc = CQ.CreateDocumentFromFile(htmldoc); //load, parse the file
var fields = doc["input"]; //get input fields with CSS
var pairs = fields.Select(node => new Tuple<string, string>(node.Id, node.Value()))
       //get values
于 2013-12-17T17:55:45.870 に答える
2

CHM を機能させるには、おそらく Windows エクスプローラーでプロパティを表示し、[コンテンツのブロックを解除する] チェックボックスをオフにする必要があります。

HTML Agility Pack は、Linq-to-XML または XPath の使い方を知っていれば非常に簡単です。

知っておくべき基本事項:

//import the HtmlAgilityPack
using HtmlAgilityPack;

HtmlDocument doc = new HtmlDocument();

// Load your data
// -----------------------------
// Load doc from file:
doc.Load(pathToFile);

// OR

// Load doc from string:
doc.LoadHtml(contentsOfFile);
// -----------------------------

// Find what you're after
// -----------------------------
// Finding things using Linq
var nodes = doc.DocumentNode.DescendantsAndSelf("input")
    .Where(node => !string.IsNullOrWhitespace(node.Id)
        && node.Attributes["value"] != null
        && !string.IsNullOrWhitespace(node.Attributes["value"].Value));

// OR

// Finding things using XPath
var nodes = doc.DocumentNode
    .SelectNodes("//input[not(@id='') and not(@value='')]");
// -----------------------------


// looping through the nodes:
// the XPath interfaces can return null when no nodes are found
if (nodes != null) 
{ 
    foreach (var node in nodes)
    {
        var id = node.Id;
        var value = node.Attributes["value"].Value;
    }
}

HtmlAgility Packを追加する最も簡単な方法は、NuGet を使用することです。

PM> インストール パッケージ HtmlAgilityPack

于 2013-12-17T17:47:25.453 に答える
0

ここからHtmlAgilityPackドキュメントの CHM ファイルをダウンロードできます。

chm ファイルの内容が表示されない場合はAlways ask before opening this file、スクリーン ショットに示すようにチェック ボックスをオフにします。

ここに画像の説明を入力

注: 上記のダイアログは、署名されていないファイルに対して表示されます

ここに画像の説明を入力

ソース: HtmlAgilityPack ドキュメント

于 2015-08-21T02:15:11.910 に答える