更新2:
在本节中,我尝试手动添加制表符和行空格,以便在通过pre标签显示时对字符串进行格式化。但这不起作用。
objStringBuilder.Append("<div>" & Environment.NewLine)
objStringBuilder.Append(vbTab & "<div>some text</div>" & Environment.NewLine)
objStringBuilder.Append("</div>" & Environment.NewLine)
Return "<pre>" & Server.HtmlEncode(objStringBuilder.ToString) & "</pre>"
更新1:
我尝试了以下操作,但它不起作用:
return "<pre>" & Server.HtmlEncode("<div><div>some text</div></div>") & "</pre>"
我希望它显示类似这样的内容
<div>
<div>some text</div>
</div>
但是它正在这样,这是预期的:
<div><div>some text</div></div>
我不知道如何获取空格,制表符,回车到该字符串中可以被pre标签识别,因为environment.newline和/或vbtab没有区别。
原始问题:
是否可以以格式化方式在页面上将HTML显示为文本?例如,它应包含空格,制表符等,以便于阅读:
从另一个问题,我学会了如何将HTML显示为文本,如下所示:
Server.HtmlEncode("<div>Some text</div>");
答案 0 :(得分:3)
其中一个也可能对可读性有用。
http://code.google.com/p/google-code-prettify/
http://webcodingstudio.com/blog/jquery-syntax-highlight-plugin
答案 1 :(得分:1)
Html Agility Pack对于解析HTML文档非常有用,XElement
类提供了格式化XML文档的能力。那么为什么不将它们用于HTML格式呢?抱歉,我不熟悉VB
,所以我在C#
中的示例:
首先,创建一个新文档:
HtmlDocument htmlDoc = new HtmlDocument();
htmlDoc.OptionFixNestedTags = true;
htmlDoc.LoadHtml("<div><div>some text</div></div>");
XElement.Parse
方法不喜欢当时的情况,例如只是文本没有包含在标签中,因此我在这种情况下添加了一个根div
标记:
if (htmlDoc.DocumentNode.HasChildNodes)
{
bool wrapperNeeded = htmlDoc.DocumentNode.ChildNodes
.Cast<HtmlNode>()
.Any(n => n.NodeType != HtmlNodeType.Element);
if (wrapperNeeded)
{
var wrapper = htmlDoc.CreateElement("div");
wrapper.AppendChildren(htmlDoc.DocumentNode.ChildNodes);
htmlDoc.DocumentNode.RemoveAllChildren();
htmlDoc.DocumentNode.AppendChild(wrapper);
}
}
然后我将文档保存为字符串:
string html = null;
using (StringWriter writer = new StringWriter())
{
htmlDoc.Save(writer);
html = writer.ToString();
}
最后,创建一个新元素并将其转换为字符串(带格式):
XElement element = XElement.Parse(html);
html = element.ToString();
html
现在包含一个值<div>\r\n <div>some text</div>\r\n</div>
,如果您对其进行html编码,则将其包含在例如<pre>
标记将获得所需的输出:
<div>
<div>some text</div>
</div>
注意:我没有仔细测试,我只想表明可以这样做。
答案 2 :(得分:1)
VB.Net有一个很酷的东西,叫做XML文字,可以让你在不需要字符串语法的情况下编写XML。只要您遵循XML语法(非常接近所有标记),您就可以使用它来编写HTML块:
Dim S = <div>
<div>some text</div>
</div>
当你打电话给ToString
时,可以选择保留格式:
S.ToString(SaveOptions.None)
输出:
<div>
<div>some text</div>
</div>
答案 3 :(得分:0)
尝试将已编码的HTML片段放在pre
或tt
标记内。