从服务器返回的字符串包含 \t \r\n

Returned string from the server contains \t \r\n

我有 C# class 使用此代码将 XSLT 转换为 html:

public class MyXslTransform
{
    public XslTransform(string styleSheetPath)
    {
        Xslt = new XslCompiledTransform();
        Xslt.Load(StyleSheetPath);
    }

    public string TransformToString(XmlDocument doc)
    {

        using (var sw = new StringWriter())
        {
            XmlReader reader = new XmlNodeReader(doc);
            Xslt.Transform(reader, null, sw);
            string html = sw.ToString();
            return html;
        }
    }
    private XslCompiledTransform Xslt { get; set; }
}

I return html 字符串作为网络控制器中的字符串类型。但是当它进入浏览器时,我会收到大量的 : \t \r\n \" 等。我怎样才能摆脱换行符、制表符等的编码。 在浏览器中我使用 AngularJS 和 C# REST web api.

如果我在 TransformToString 方法中使用此代码:

using (MemoryStream ms = new MemoryStream())
{
    using (XmlTextWriter writer = new XmlTextWriter(ms, Encoding.UTF8))
    {
        Xslt.Transform(doc.CreateNavigator(), writer);
        ms.Position = 0;

        using (var sr = new StreamReader(ms))
        {
            return sr.ReadToEnd();
        }
    }
}

我只得到 \n,\t 和转义双引号 \"

控制器中的方法:

[HttpGet]
public string GetHtmlFromXslt()
{
    return GetHtmlFromXmlAndXslt();
}

首先,我建议 return 作为 html 而不是纯文本(可能这就是您获得这些符号的原因):

[HttpGet]
public HttpResponseMessage GetHtmlFromXslt()
{
    var response = new HttpResponseMessage();
    response.Content = new StringContent(GetHtmlFromXmlAndXslt());
    response.Content.Headers.ContentType = new MediaTypeHeaderValue("text/html");
    return response;
} 

如果这不可能,您可以在显示之前替换不需要的字符串,如下所示:

yourHtml.replace(/\n|\r|\t/g, '') //will replace \n, \t and \r