Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用XSLT和XMLWRITER创建具有特定编码的XML_C#_Xml_Xmlreader_Xmlwriter_Xslt - Fatal编程技术网

C# 如何使用XSLT和XMLWRITER创建具有特定编码的XML

C# 如何使用XSLT和XMLWRITER创建具有特定编码的XML,c#,xml,xmlreader,xmlwriter,xslt,C#,Xml,Xmlreader,Xmlwriter,Xslt,我试图在源xml上应用XSL样式表,并将输出写入目标xml文件。xsl删除源xml中存在的xml注释 目标xml文件的头中有UTF-16编码 但我仍然希望输出xml是utf-8编码。我使用的代码是 XmlWriterSettings xwrSettings = new XmlWriterSettings(); **xwrSettings.Encoding = Encoding.UTF8;** XslCompiledTran

我试图在源xml上应用XSL样式表,并将输出写入目标xml文件。xsl删除源xml中存在的xml注释

目标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,但它不起作用。

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

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

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

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子类化并覆盖编码-这应该是这样的。谢谢你的回答。是的,如果我直接写入一个文件,你是正确的,它可以工作。但是我需要这个stringbuilder对象,以便以后进一步处理xml内容,然后我将写入该文件。因为我使用的是这个stringbuilder对象,所以它是以UTF-16的形式编写的。@padman-您可以将StringWriter子类化并覆盖编码-这应该是它的。