删除div后的所有格式

时间:2013-04-29 09:04:18

标签: c# asp.net html

是否可以使用<div></div>标记保留所有文字格式,而不会将任何未关闭的标记溢出到页面的其余部分?

我有一个repeater控件,可以将database中的内容显示在label内的标准<div>上。为了减少空间成本,我将字符串格式化为 1000个字符。不幸的是,这会切断任何结束标记,并导致页面的其余部分生效。

我需要一种方法来最后渲染<div>,或者强制关闭标签。
我不认为htmlAgilityPack可以使用它。

我不知道怎么做,或者从哪里开始,所以我没有代码可以显示。任何人都可以指出我正确的方向。

2 个答案:

答案 0 :(得分:2)

Html Agility Pack确实可以自动关闭代码。例如,此代码

string html = "<div>hello<b>bold<i>and italic";
HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(html);
doc.Save(Console.Out);

将输出:

<div>hello<b>bold<i>and italic</i></b></div>

答案 1 :(得分:0)

我创建了一个检查字符串的方法,然后关闭标记。我将更新代码的任何进一步建议。

    public string FormatClosingTags(string origionalText)
    {
        string manipulate = origionalText;

        // Get the tags away from the words.
        manipulate = manipulate.Replace(">", "> ");
        manipulate = manipulate.Replace("<", " <");

        // Now that the tags are alone and weak, split them up!
        string[] tags = manipulate.Split(' ');

        // Create holding cells to sibigate the tags.
        List<string> openingTags = new List<string>();
        List<string> closingTags = new List<string>();

        // Create a marshal to hold the subjugated tags.
        StringBuilder output = new StringBuilder();

        // Find all those tags!
        foreach (string s in tags)
        {
            // Make sure its only the women and children
            if ((s.Contains("<") || s.Contains(">")) && (!s.Contains("</")))
            {
                openingTags.Add(s);
            }
            // While keeping the males to themsleves
            else if ((s.Contains("<") || s.Contains(">")) && (s.Contains("</")))
            {
                closingTags.Add(s);
            }
        }


        // Get one of those harsh ladies with a clipboard and make her count all the men
        int counter = closingTags.Count;

        // Destroy all the females that have a male
        openingTags.RemoveRange(0, counter);

        // Find the rest of the lonely women
        foreach (string open in openingTags)
        {
            // CONVERT THEM TO MEN - add them to the marshal's list
            output.Append(open.Replace("<", "</"));
        }

        return origionalText + output;
    }