HTMLテーブルをCSVファイルに解析する(colspanおよびrowspan)

asp.net c# html-agility-pack html-parsing

質問

HTMLテーブルをCSVファイルに解析したいが、適切な数のcolspanとrowpspanを保持したい。

私は";"を使用しています区切り文字として使用します。従って、2列の列スパンがある場合、例えば、1つしか持たない代わりに、 ";"は、2を持つことになります。

私はテーブルの内容を抽出し、 tr標識が終わったところで改行を行うことができますが、 colspanrowspanの扱い方は分かりません。

HtmlNodeCollection rows = tables[0].SelectNodes("tr");

// Aux vars
int i;
// ncolspan

// For each row...
for (i = 0; i < rows.Count; ++i)
{
    // For each cell in the col...
    foreach (HtmlNode cell in rows[i].SelectNodes("th|td"))
    {
        /* Unsuccessful attempt to treat colspan
        foreach (HtmlNode n_cell in rows[i].SelectNodes("//td[@colspan]"))
        {
            ncolspan = n_cell.Attributes["colspan"].Value;
        }
        */

        text.Write(System.Text.RegularExpressions.Regex.Replace(cell.InnerText, @"\s\s+", ""));
        text.Write(";");
        /*
        for (int x = 0; x <= int.Parse(ncolspan); x++)
        {
            text.Write(";");
        }
        */
    }
    text.WriteLine();
    ncolspan = "0";
}

助けてください。ありがとうございました!

UPDATE:使用する簡単な例のテーブル:

HtmlNodeCollection rows = tables[0].SelectNodes("tr");

// Aux vars
int i;
// ncolspan

// For each row...
for (i = 0; i < rows.Count; ++i)
{
    // For each cell in the col...
    foreach (HtmlNode cell in rows[i].SelectNodes("th|td"))
    {
        /* Unsuccessful attempt to treat colspan
        foreach (HtmlNode n_cell in rows[i].SelectNodes("//td[@colspan]"))
        {
            ncolspan = n_cell.Attributes["colspan"].Value;
        }
        */

        text.Write(System.Text.RegularExpressions.Regex.Replace(cell.InnerText, @"\s\s+", ""));
        text.Write(";");
        /*
        for (int x = 0; x <= int.Parse(ncolspan); x++)
        {
            text.Write(";");
        }
        */
    }
    text.WriteLine();
    ncolspan = "0";
}

人気のある回答

CSVは、行間または列間の値を処理しません。列の区切り文字や行末の文字を超える列や行の概念を持たない非常にシンプルな形式です。

rowspanとcolspanを保存する場合は、モデルをCSVに書き出す前に、セルの特定の内容とその場所を保存するために使用できる中間オブジェクトモデルを使用する必要があります。そして、たとえそうであっても、CSV形式は、あなたが望むかもしれないように(つまり、Excelシートのように)、colspanとrowspanを保持しません。




ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ