使用以下代码:
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 中打开时没有。
最佳答案
您应该使用“\r\n”来表示新行。
有两种方法可以处理换行符:
设置编写器在使用 NewLineChars 编写新行时使用特定字符选项。
指示作者不要使用 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()”的调用中。
关于c# - XslCompiledTransform 换行符,如何输入它们?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19274799/