【问题标题】:How to create a XML with a Specific Encoding using XSLT and XMLWRITER如何使用 XSLT 和 XMLWRITER 创建具有特定编码的 XML
【发布时间】:2011-04-12 15:22:05
【问题描述】:

我正在尝试在源 xml 上应用 XSL 样式表并将输出写入目标 xml 文件。 xsl 会删除源 xml 中存在的 xml cmets。

目标 xml 文件的标头中有 UTF-16 编码。

但我仍然希望输出 xml 为 utf-8 编码。我使用的代码是

            XmlWriterSettings xwrSettings = new XmlWriterSettings();
            **xwrSettings.Encoding = Encoding.UTF8;**

            XslCompiledTransform xslt = new XslCompiledTransform();
            xslt.Load("sample.xsl");
            StringBuilder sb = new StringBuilder();
            XmlReader xReader = XmlReader.Create("Source.xml");
            XmlWriter xWriter = XmlWriter.Create(sb, xwrSettings);                
            xslt.Transform(xReader, xWriter);
            File.WriteAllText("Target.xml",sb.ToString());

我尝试将 xml 写入器设置为 UTF-8,但它不起作用。

【问题讨论】:

    标签: c# xml xmlreader xmlwriter xslt


    【解决方案1】:

    既然你正在写入文件,为什么不直接使用:

    using (XmlReader xReader = XmlReader.Create("Source.xml"))
    using (XmlWriter xWriter = XmlWriter.Create("Target.xml", xwrSettings)) {
        xslt.Transform(xReader, xWriter);
    }
    // your file is now written
    

    【讨论】:

    • 感谢您的回复。是的,如果我直接写入文件,您是正确的。但我需要那个 stringbuilder 对象来进一步处理 xml 内容,然后我将写入文件。因为我使用的是这个 stringbuilder 对象,所以它写成 UTF-16。
    • @padman - 你可以继承 StringWriter 并覆盖 Encoding - 应该这样。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-02
    • 2013-12-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多