2010-09-15 44 views
1

我想在源xml上應用XSL樣式表並將輸出寫入目標xml文件。 xsl刪除源xml中存在的xml註釋。如何使用XSLT和XMLWRITER創建具有特定編碼的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,但它不工作。

回答

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 
+0

感謝你是正確的response.Yes如果我直接寫它的工作原理文件。但我需要該stringbuilder對象進一步處理xml內容,然後我會寫入該文件。因爲我使用這個stringbuilder對象,所以它將它寫爲UTF-16。 – Defendore 2010-09-15 11:45:57

+1

@padman - 你可以繼承StringWriter並覆蓋編碼 - 應該如此。 – 2010-09-15 16:23:22