2010-09-15 8 views
1

J'essaie d'appliquer une feuille de style XSL sur un fichier XML source et d'écrire la sortie dans un fichier xml cible. Le xsl supprime les commentaires xml présents dans le fichier XML source.Comment créer un XML avec un codage spécifique en utilisant XSLT et XMLWRITER

Le fichier xml cible est codé en UTF-16 dans l'en-tête. Mais je veux toujours que le fichier XML de sortie soit un encodage UTF-8. Le code i utilisé est

  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()); 

J'ai essayé de mettre l'écrivain xml paramètre pour être UTF-8, mais il ne fonctionne pas.

Répondre

1

Puisque vous écrivez un fichier, pourquoi ne pas simplement utiliser:

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

Merci pour les response.Yes vous avez raison si j'écris directement à un fichier, il fonctionne. mais j'ai besoin de cet objet stringbuilder pour le traitement du contenu xml plus tard, puis je vais écrire dans le fichier. Parce que j'utilise cet objet stringbuilder, il l'écrit en UTF-16. – Defendore

+1

@padman - vous pouvez sous-classifier StringWriter et remplacer Encoding - cela devrait être le cas. –

Questions connexes