c# - XslCompiledTransform 换行符,如何输入它们?

标签 c# linq-to-xml 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 中打开时没有。

最佳答案

您应该使用“\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()”的调用中。

关于c# - XslCompiledTransform 换行符,如何输入它们?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19274799/

相关文章:

c# - 两个 HTML 的比较

c# - 将 XElement 添加到特定位置的另一个 XElement

c# - 运行时的 Linq To XSD

c# - 根据父节点的属性获取子节点

c# - 是否有更有效的方法来转换已经包含对 XSLT 的引用的 XDocument?

c# - 如果落后则跳过帧渲染

c# - Process.Start() 抛出 "Access Denied"错误

c# - 使用 ServiceStack 的 Soap12ServiceClient 将请求对象发送到使用 ServiceStack.Factory 配置的服务时出现 404 错误

c# - 使用 XmlCompiledTransform 合并两个 XPathDocuments

xml - vb 2010 XslCompiledTransform 需要从字符串而不是从 URI 磁盘文件进行转换