質問

い構文解析のhtmlテーブルhtmlを利用したアジリティパックです。思い出の一部定義済みカラムデータからの表に示す。

私は、こうした新しい構文解析およびhtmlジパックしていましたがわからないご利用方法htmlのアジリティパックのようにまとめられます

場合では誰もが知っているので、次のうえ可能な場合

編集:

で解析をhtmlのテーブルのようにしていくために、どのようなエキスを決定したカラム名のデータのみですか?のようにあの4カラム名、住所、phnoやしたいのだけを抽出するには氏名、住所データです。

役に立ちましたか?

解決

あの例のディスカッション-フォーラム こちらの.スクロール減少し、テーブルの答えです。いているのなら、よりサンプルがります。

編集:抽出データから特定のカラムが最初に <th> タグに対応する列のだとされたことを思い出す。使う必要があり、その <td> タグと同じスを作成します。と仮定している指数の列ができるようなこと:

HtmlDocument doc = new HtmlDocument();
doc.LoadHtml("http://somewhere.com");
HtmlNode table = doc.DocumentNode.SelectSingleNode("//table");
foreach (var row in table.SelectNodes("//tr"))
{
    HtmlNode addressNode = row.SelectSingleNode("td[2]");
    //do something with address here
    HtmlNode phoneNode = row.SelectSingleNode("td[5]");
    // do something with phone here
}

Edit2:わからない場合は、指数の列ができるようになることになったようで。私は確認しておりません。

HtmlDocument doc = new HtmlDocument();
doc.LoadHtml("http://somewhere.com");
var tables = doc.DocumentNode.SelectNodes("//table");

foreach(var table in tables)
{
    int addressIndex = -1;
    int phoneIndex = -1;
    var headers = table.SelectNodes("//th");
    for (int headerIndex = 0; headerIndex < headers.Count(); headerIndex++)
    {
        if (headers[headerIndex].InnerText == "address")
        {
            addressIndex = headerIndex;
        }
        else if (headers[headerIndex].InnerText == "phone")
        {
            phoneIndex = headerIndex;
        }
    }

    if (addressIndex != -1 && phoneIndex != -1)
    {
        foreach (var row in table.SelectNodes("//tr"))
        {
            HtmlNode addressNode = row.SelectSingleNode("td[addressIndex]");
            //do something with address here
            HtmlNode phoneNode = row.SelectSingleNode("td[phoneIndex]");
            // do something with phone here
        }
    }
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top