【问题标题】:Returned string from the server contains \t \r\n从服务器返回的字符串包含 \t \r\n
【发布时间】:2015-03-26 08:00:36
【问题描述】:

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

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; }
}

我在 Web 控制器中将 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 sr.ReadToEnd() excnahge 到 var temp = sr.ReadToEnd(); File.WriteAllText("1.txt", temp);。 “1.txt”文件会有\n、\t符号吗?
  • 它保留 \r\n 但不是可见字符而是空格。也许我不应该将它作为字符串返回?

标签: c# asp.net xslt asp.net-web-api


【解决方案1】:

首先,我建议将其作为 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 

【讨论】:

  • 如何将其作为 html 返回?我有一个 REST API,而不是 ASP.NET 页面,返回的字符串/html 在到达时附加在 angularJS 中。
  • @A.K 也许你需要设置内容类型 Response.ContentType = "text/html";.
  • 我添加了我的函数,该函数驻留在我制作的 ApiController 子类中
  • 哈哈,我刚刚在这里找到了:stackoverflow.com/questions/14046417/…
  • 我还会返回 IHttpActionResult 以便将来更轻松地迁移到 ASP.NET 6
猜你喜欢
  • 2021-06-17
  • 1970-01-01
  • 2023-03-06
  • 1970-01-01
  • 2014-01-03
  • 2019-10-24
  • 2019-04-03
  • 2014-08-24
  • 2017-05-05
相关资源
最近更新 更多