在C#中,如何对XML进行编码以将其输出到页面的JavaScript部分的JSON内

问题描述

|| 我有一个处理程序,可以上传KML文件并以KML文件作为属性返回JSON:
context.Response.Write(\"{\\\"name\\\":\\\"\" + FileName + 
\"\\\",\\\"type\\\":\\\"\" + FileType + 
\"\\\",\\\"size\\\":\\\"\" + FileSize + 
\"\\\",\\\"region_id\\\":\\\"\" + regionID + 
\"\\\",\\\"kml\\\":\\\"\" + HttpUtility.HtmlEncode(xmlData) + \"\\\"}\");
如您所见,我正在尝试使用
HttpUtility.HtmlEncode
对KML进行编码,但响应中出现错误:   未捕获的异常:无效的JSON 如何在C#中对XML / KML文件进行属性编码,以便以后可以在JavaScript中对其进行解码? 编辑1:根据Cheeso的评论 我在IIS 7.5 Windows 7上使用ASP.NET,.NET版本4。我的处理程序是ashx文件。如果我在响应中遗漏了KML数据(
HttpUtility.HtmlEncode(xmlData)
),则响应工作正常。 编辑#2 我还尝试根据主持人的评论使用ѭ3。我这样使用它:
System.Web.Script.Serialization.JavaScriptSerializer serializer;
context.Response.Write(\"{\\\"name\\\":\\\"\" + FileName + 
\"\\\",\\\"kml\\\":\\\"\" + serializer.Serialize(xmlData) + \"\\\"}\");
我仍然收到相同的“无效的JSON”错误。     

解决方法

HTML编码器将“ 5”编码为“ 6”,依此类推。这无助于将XML转换为JSON格式。您想要的是一个JavaScript编码。使用
HttpUtility.JavaScriptStringEncode
http://msdn.microsoft.com/en-us/library/dd991914.aspx     ,您想构建JSON,对。。。显然我建议JSON序列化器是荒谬的。。。
string FileName = \"foo.txt\",FileType = \"csv\";
int FileSize = 1134,regionID = 12;
string xml = \"<foo><bar/></foo>\";

string json= new JavaScriptSerializer().Serialize(new {
    name = FileName,type = FileType,size = FileSize,region_id = regionID,kml = xml
});
在大多数情况下,使用预先固定的序列化程序对于数据的边缘情况既方便又可靠。