C# 如何使用XSLT和XMLWRITER创建具有特定编码的XML
我试图在源xml上应用XSL样式表,并将输出写入目标xml文件。xsl删除源xml中存在的xml注释 目标xml文件的头中有UTF-16编码 但我仍然希望输出xml是utf-8编码。我使用的代码是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
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子类化并覆盖编码-这应该是它的。