Altova Mailing List Archives>Archive Index >microsoft.public.xsl Archive Home >Recent entries >Thread Prev - UTF-8 / XslCompiledTransform >Thread Next - Re: UTF-8 / XslCompiledTransform Re: UTF-8 / XslCompiledTransformTo: NULL Date: 11/12/2008 12:53:00 PM Gina_Marano wrote:
> This has been working for months until now. I finally get a foreign
> character and it blows up.
>
> <?xml version="1.0" encoding="UTF-8"?>
> ...
> <ship_to_city>santana de parnaíba</ship_to_city>
> ...
>
>
> transformation code:
>
> XmlTextReader readerOrigContent =
> new XmlTextReader(new MemoryStream(UTF8Encoding.Default.GetBytes
> (sOrigXMLContent)));
> StringBuilder sbResult = new StringBuilder();
> StringWriter sResult = new StringWriter(sbResult);
> XmlTextWriter sXML = new XmlTextWriter(sResult);
>
> XslCompiledTransform myXslTransform = new XslCompiledTransform();
> myXslTransform.Load(aXSLFileName);
> myXslTransform.Transform(readerOrigContent, null, sXML);
Forget about byte arrays, memory streams and encodings. Assuming you
have a string with the markup of the XML document you want to transform
then simply use an XmlReader over a StringReader
using (XmlReader reader = XmlReader.Create(new
StringReader(sOrigXMLContent)))
{
...
myXslTransform.Transform(reader, null, someWriter);
}
Your code above also suggests you want a string as the transformation
result. Based on that it should suffice to do e.g
string result;
using (XmlReader reader = XmlReader.Create(new
StringReader(sOrigXMLContent)))
{
StringWriter writer = new StringWriter();
XslCompiledTransform proc = new XslCompiledTransform();
proc.Transform(reader, null, writer);
result = writer.ToString();
}
The Transform method has lots of overloads taking different types of
arguments, make use of that instead of creating all those different
objects (StringBuilder, StringWriter, XmlTextWriter).
--
Martin Honnen --- MVP XML
http://JavaScript.FAQTs.com/
| ||||||
| Company | Legal | Press | Partners | Careers | Sitemap | Contact Us | Altova Blog | Mobile | Full Site | |||
|
