是否可以使用<div></div>
标记保留所有文字格式,而不会将任何未关闭的标记溢出到页面的其余部分?
我有一个repeater
控件,可以将database
中的内容显示在label
内的标准<div>
上。为了减少空间成本,我将字符串格式化为 1000个字符。不幸的是,这会切断任何结束标记,并导致页面的其余部分生效。
我需要一种方法来最后渲染<div>
,或者强制关闭标签。
我不认为htmlAgilityPack
可以使用它。
我不知道怎么做,或者从哪里开始,所以我没有代码可以显示。任何人都可以指出我正确的方向。
答案 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;
}