使用C#转换HTML标记

时间:2011-07-08 15:15:16

标签: c# html

我有一种情况需要转换嵌套的HTML列表,如下所示:

<ol>
<li>Item 1
    <ol>
        <li> Item 1.1
            <ol>
                <li>Item 1.1.1</li>
                <li>Item 1.1.2</li>
            </ol>
        </li>
    </ol>
</li>
<li>Item 2
    <ol>
        <li> Item 2.1
            <ol>
                <li>Item 2.1.1</li>
                <li>Item 2.1.2</li>
            </ol>
        </li>
    </ol>
</li>

进入单独的缩进表(其中每个ol是一个表,正确缩进以看起来像嵌套表)。最好的方法是什么?我看过HtmlAgility包,但是一旦找到它我就无法弄清楚如何替换标签(我能够找到所有合适的标签,但无法对它们做任何事情)......

基本上,我需要输出表看起来像这样:

<table>
<tr>
    <td>
        &bull;
    </td>
    <td>
        Item 1
    </td>
</tr>
</table>
<table style="margin-left: 5px;">
    <tr>
        <td>
            &bull;
        </td>
        <td>
            Item 1.1
        </td>
    </tr>
</table>
<table style="margin-left: 10px;">
    <tr>
        <td>
            &bull;
        </td>
        <td>
            Item 1.1.1
        </td>
    </tr>
    <tr>
        <td>
            &bull;
        </td>
        <td>
            Item 1.1.2
        </td>
    </tr>
</table>
<table>
    <tr>
        <td>
            &bull;
        </td>
        <td>
            Item 2
        </td>
    </tr>
</table>
<table style="margin-left: 5px;">
    <tr>
        <td>
            &bull;
        </td>
        <td>
            Item 2.1
        </td>
    </tr>
</table>
<table style="margin-left: 10px;">
    <tr>
        <td>
            &bull;
        </td>
        <td>
            Item 2.1.1
        </td>
    </tr>
    <tr>
        <td>
            &bull;
        </td>
        <td>
            Item 2.1.2
        </td>
    </tr>
</table>

2 个答案:

答案 0 :(得分:3)

使用<ol>替换<table>和使用<li>的{​​{1}}的正则表达式不起作用吗?

答案 1 :(得分:3)

将您尝试做的事情分解为更简单的步骤。

1)将所有<ol>替换为<table><tr>
2)将所有<li>替换为<td>
3)将所有</li>替换为</td>
4)将所有</ol>替换为</tr></table>

......或类似的。如果我正确理解你的问题,它基本上是一个直接翻译。