如何在XML Literals(VB.NET)中阻止嵌入式表达式的HTML编码?

时间:2008-11-12 21:56:40

标签: vb.net xml-literals

使用以下代码:

Dim x As System.Xml.Linq.XElement = _
<div>
<%= message.ToString() %>
</div>
Dim m = x.ToString()

...如果消息是HTML,那么&lt;和&gt;字符转换为&lt;&rt;

如何强制它跳过此编码?

2 个答案:

答案 0 :(得分:7)

message变量的类型是什么?如果messageXElement,那么请暂停.ToString这样的调用:

Dim x As System.Xml.Linq.XElement = _
    <div>
        <%= message %>
    </div>
Dim m = x.ToString()

如果message是其他类型(如StringBuilder),请执行以下操作:

Dim x As System.Xml.Linq.XElement = _
    <div>
        <%= XElement.Parse(message.ToString()) %>
    </div>
Dim m = x.ToString()

答案 1 :(得分:1)

您需要将HTML snippit作为XML文档打开,并将文档节点附加到您正在创建的Div节点。

如果要将XML(或HTML)添加到现有XML文档中,则必须将其添加为XML而不是文本(因为它会被编码)。