|
1 | | -using System; |
| 1 | +using System; |
2 | 2 | using System.Data; |
3 | 3 | using System.IO; |
| 4 | +using System.Text; |
4 | 5 | using System.Xml; |
5 | 6 | using System.Xml.Xsl; |
6 | 7 |
|
@@ -66,14 +67,38 @@ private static string TransformDataSet(DataSet dataSet, string xslt) |
66 | 67 | dataSet.WriteXml(dataSetXmlWriter); |
67 | 68 | dataSetOutputStream.Position = 0; |
68 | 69 |
|
| 70 | + var stringBuilder = new StringBuilder(); |
| 71 | + |
| 72 | + var outputSettings = CreateOutputSettings(xslTransform.OutputSettings); |
| 73 | + |
69 | 74 | using (var dataSetXml = new XmlTextReader(dataSetOutputStream)) |
70 | | - using (var resultOutputStream = new MemoryStream()) |
71 | | - using (var resultWriter = new XmlTextWriter(resultOutputStream, encoding)) |
| 75 | + using (var resultWriter = XmlWriter.Create(stringBuilder, outputSettings)) |
72 | 76 | { |
73 | 77 | xslTransform.Transform(dataSetXml, resultWriter); |
74 | | - return encoding.GetString(resultOutputStream.ToArray()); |
| 78 | + return stringBuilder.ToString(); |
75 | 79 | } |
76 | 80 | } |
77 | 81 | } |
| 82 | + |
| 83 | + private static XmlWriterSettings CreateOutputSettings(XmlWriterSettings settingsFromReader) |
| 84 | + { |
| 85 | + return new XmlWriterSettings |
| 86 | + { |
| 87 | + Async = settingsFromReader.Async, |
| 88 | + CheckCharacters = settingsFromReader.CheckCharacters, |
| 89 | + CloseOutput = settingsFromReader.CloseOutput, |
| 90 | + ConformanceLevel = settingsFromReader.ConformanceLevel, |
| 91 | + DoNotEscapeUriAttributes = settingsFromReader.DoNotEscapeUriAttributes, |
| 92 | + Encoding = settingsFromReader.Encoding, |
| 93 | + Indent = settingsFromReader.Indent, |
| 94 | + IndentChars = settingsFromReader.IndentChars, |
| 95 | + NamespaceHandling = settingsFromReader.NamespaceHandling, |
| 96 | + NewLineChars = settingsFromReader.NewLineChars, |
| 97 | + NewLineHandling = settingsFromReader.NewLineHandling, |
| 98 | + NewLineOnAttributes = settingsFromReader.NewLineOnAttributes, |
| 99 | + OmitXmlDeclaration = settingsFromReader.OutputMethod == XmlOutputMethod.AutoDetect || settingsFromReader.OmitXmlDeclaration, |
| 100 | + WriteEndDocumentOnClose = settingsFromReader.WriteEndDocumentOnClose |
| 101 | + }; |
| 102 | + } |
78 | 103 | } |
79 | 104 | } |
0 commit comments