HTML 테이블을 CSV 파일로 구문 분석 (colspan 및 rowspan)

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

문제

HTML 테이블을 CSV 파일로 구문 분석하지만 colspan 및 rowpspan의 올바른 수를 유지하려고합니다.

나는 ";" 구분 기호 셀로 . 따라서 예를 들어 두 열의 colspan이있는 경우 하나만있는 대신 ";"을 사용하면 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";
}

도움이 필요하십니까? 고맙습니다!

업데이트 : 여기 간단한 예제 테이블을 사용합니다.

<table id="T123" border="1">
    <tr>
        <td colspan="3"><center><font color="red">Title</font></center></td>
    </tr>
    <tr>
        <th>R1 C1</th>
        <th>R1 C2</th>
        <th>R1 C3</th>
    </tr>
    <tr>
        <td>R2 C1</td>
        <td>R2 C2</td>
        <td>R2 C3</td>
    </tr>
    <tr>
        <td colspan="2">R3 C1 e C2 with "</td>
        <td>R3 C3</td>
    </tr>
    <tr>
        <td>R4 C1</td>
        <td colspan=2>R4 C2 e C3 without "</td>
    </tr>
    <tr>
        <td>R5 C1</td>
        <td>R5 C2</td>
        <td>R5 C3</td>
    </tr>
    <tr>
        <td rowspan ="2">R6/R7 C1: Two lines rowspan. Must leave the second line blank.</td>
        <td>R6 C2</td>
        <td>R6 C3</td>
    </tr>
    <tr>
        <td>R7 C2</td>
        <td>R7 C3</td>
    </tr>
    <tr>
        <td>End</td>
    </tr>
</table>

인기 답변

CSV는 rowspan 또는 colspan 값을 처리하지 않습니다. 이는 구분 기호 및 행 끝 문자 이외의 열 또는 행 개념이없는 매우 간단한 형식입니다.

rowspan 및 colspan을 유지하려는 경우 모델을 CSV로 내보내기 전에 셀의 특정 내용과 위치를 저장하는 데 사용할 수있는 중간 개체 모델을 사용해야합니다. 그리고 그때조차도 CSV 형식은 원하는대로 Excel 스프레드 시트처럼 colspan 및 rowspan을 유지하지 않습니다.



아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.