2014-01-07 78 views
0

我有以下的一段編碼:如何強制HTML不將xml字符串解析爲文本輸入?

<ItemTemplate> 
    <asp:TextBox ID="TextBox2" runat="server" Height="162px" ReadOnly="True" 
     Text='<%# Eval("XMLResponse")%>' TextMode="MultiLine" Width="447px"> 
    </asp:TextBox> 
</ItemTemplate> 

這從數據庫返回的XML字符串,並將其顯示在輸入,問題是,由於某種原因,它解析此XML,以確保它是有效的它通常不是(我無法控制該xml的生成)。如果XML是有效的,上面的代碼完美的作品,如果它不那麼我得到以下錯誤:

The '=' character, hexadecimal value 0x3D, cannot be included in a name. Line 1, position 13

我曾指出,在這種特殊情況下(但情況會發生變化),這是因爲XML開始是這樣的:

?xmlversion='1.0'?

,而不是像這樣:

?xml version="1.0" ?

如果我用它加載到文本框中HttpUtility.HtmlEncode沒有問題,但隨後的XML格式是OB極不正確。我敢肯定,有一些簡單的方法強制它不解析XML,但我似乎無法在網上找到它。非常感謝您的幫助!

+0

怎麼樣使用HTML編碼 –

+0

您好,感謝穆拉利但如果你重讀我的最後一段你會發現爲什麼這不是正確的解決方案。 – SkankyMuppet

回答

0

我發現了一個解決方案,以防其他人有同樣的,非常令人沮喪的問題。答案是使用HttpUtility.JavaScriptStringEncode上的數據庫輸出(在我的情況XMLResponse),然後使用正則表達式,如產生的UTF-8字符串解碼如下:

$(window).load(function() { 
     var x = $("#TextBox2").val(); 
     var r = /\\u([\d\w]{4})/gi; 
     x = x.replace(r, function (match, grp) { 
      return String.fromCharCode(parseInt(grp, 16)); 
     }); 
     x = unescape(x); 
     $("#TextBox2").val(x); 
    }); 

我曾經在這裏找到求助答案與正則表達式:

How do I decode a string with escaped unicode?

+0

順便說一下,我做了第一次嘗試JavaScript解碼(我嘗試了數百個解決方案之一)之後使用HtmlEncode,但這失去了一些格式,因此沒有正確解碼。 – SkankyMuppet

相關問題