2015-01-27 1 views
1

포함 I이 코드를 사용하여 HTML로 XSLT 변환 C# 클래스 가지고문자열이 반환 t R 없음

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

내가 웹 제어기 문자열 유형으로 HTML 문자열을 반환한다. 하지만 브라우저에 도착하면 \t \r\n \" 등을로드합니다. 줄 바꿈, 탭 등의 인코딩을 제거하려면 어떻게해야합니까? 브라우저에서 AngularJS와 C# REST 웹 API를 사용합니다. 나는 TransformToString 방법 대신에이 코드를 사용하는 경우

:의

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

단지 시험. 결과 문자열을 파일로 쓸 수 있습니까? 'return sr.ReadToEnd()'excnahge to'var temp = sr.ReadToEnd(); File.WriteAllText ("1.txt", temp);'. "1.txt"파일에는 \ n, \ t 기호가 있습니까? –

+0

그것은 \ r \ n을 볼 수있는 문자가 아닌 공백으로 유지합니다. 아마도 문자열로 반환하지 않아야할까요? – AlexandruC

답변

3

첫째 :

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을 얻고 탈출 내가 평범한 텍스트가 아닌 html로 반환하도록 제안하는 모든 것 (아마 그것은 rea이다. 아들은 왜)이 상징을 받고 : 가능하지 않은 경우

[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 
+0

어떻게 html로 반환합니까? ASP.NET 페이지가 아닌 REST API를 가지고 있습니다. 반환되는 문자열/html은 도착시 angularJS에 추가됩니다. – AlexandruC

+0

@ A.K : 아마도 콘텐츠 유형을 설정해야합니다. ** Response.ContentType = "text/html"; **. – Vladimirs

+0

내가 만든 API 함수 하위 클래스에있는 내 함수를 추가했습니다. – AlexandruC