2013-10-09 32 views
2

使用下面的代碼:XslCompiledTransform換行符,如何輸入它們?

XDocument transformedDoc = new XDocument(); 
     using (XmlWriter writer = transformedDoc.CreateWriter()) 
     { 
      XslCompiledTransform transform = new XslCompiledTransform(); 
      //transform.Load(XmlReader.Create(new StringReader(HttpContext.Current.Server.MapPath("~/XML/CareLog.xsl")))); 
      transform.Load(HttpContext.Current.Server.MapPath("~/XML/CareLog.xsl")); 
      transform.Transform(doc.CreateReader(), writer); 
     } 

我從一個數據庫,包含<br />的線回報(如在別處使用)的一些字符串。無論我用什麼替換它,Environment.NewLine,\ n等,它都不會在轉換後的文檔中出現換行符。

編輯

更換符合\ r \ n打破,改變爲按以下建議:

var xslt = new XslCompiledTransform(); 
xslt.Load(HttpContext.Current.Server.MapPath("~/XML/CareLogresidenceSummary.xsl")); 
var settings = xslt.OutputSettings.Clone(); 
settings.NewLineChars = "\n"; 
using (var reader = doc.CreateReader()) 
{ 
    using (var writer = XmlWriter.Create(HttpContext.Current.Server.MapPath("~/BrowserTemp/CareLogResidenceSummary.xml"), settings)) 
    { 
     xslt.Transform(reader, writer); 
    } 
} 

仍會創建轉化文件確定,但仍然沒有放任何東西到一個新的生產線。作爲參考,我將重命名帶有擴展名爲.doc的轉換後的文檔以便在Word中打開,XML有換行符,但在Word中打開時沒有。

回答

0

使用應該使用「\ r \ n」代表新行。

有兩種方法可以處理換行符:

  1. 建立作家寫使用NewLineChars選擇新的生產線時要使用特定的字符。

  2. 指導作家不使用NewLineHandling選項

所以,你可以按如下方式保持新行修改代碼修改新線:

var xslt = new XslCompiledTransform(); 
xslt.Load(HttpContext.Current.Server.MapPath("~/XML/CareLog.xsl")); 
var settings = xslt.OutputSettings.Clone(); 
settings.NewLineChars = "\n"; 
settings.NewLineHandling = NewLineHandling.Replace; 
using (var reader = XmlReader.Create("example.xml")) 
{ 
using (var writer = XmlWriter.Create("yourDoc.txt", settings)) 
{ 
    xslt.Transform(reader, writer); 
} 
} 

需要注意的是我的避風港不會運行這個。你唯一需要做的就是讓你的文件進入到「XmlWriter.Create()」的調用中。

+0

請參閱編輯。 – user1166905

+0

嘗試設置NewLineHandling選項,例如像「settings.NewLineHandling = NewLineHandling.Replace」。調查NewLineHandling文章中指定的選項。 –

+0

Nope沒有任何區別 – user1166905

相關問題