Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to prevent HTML encoding for embedded expressions in XML Literals (VB.NET)?

With the following code:

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

...if message is HTML, then the < and > characters get converted to &lt; and &rt;.

How can I force it to skip this encoding?

like image 747
Larsenal Avatar asked Nov 12 '08 21:11

Larsenal


2 Answers

What is the type of your message variable? If message is an XElement, then just leave off the .ToString call like this:

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

If message is some other type (like StringBuilder), then do this:

Dim x As System.Xml.Linq.XElement = _
    <div>
        <%= XElement.Parse(message.ToString()) %>
    </div>
Dim m = x.ToString()
like image 54
CoderDennis Avatar answered Nov 16 '22 10:11

CoderDennis


You need to open the HTML snippit as an XML document and append the document node to the Div node you are creating.

If you want to add XML (or HTML) to an existing XML document then you have to add it as XML and not as text (cause that gets encoded).

like image 43
Brody Avatar answered Nov 16 '22 11:11

Brody