Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
Web Services, XML
XmlSerializer che lavora con encoding utf-8
mercoledì 02 agosto 2006 - 17.49
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
Pinky
Profilo
| Junior Member
77
messaggi | Data Invio:
mer 2 ago 2006 - 17:49
.NET 2.0
Ho un metodo pubblico di un Web service che recupera i dati dal DB e dopo averli serializzati in un oggetto restituisce la stringa contenente l' XML.
Tale stringa è ottenuta Serializzando tale oggetto:
[CODE]public static string SerializeProductDocument(ProductDocument productDocument) { XmlSerializer serializer = new XmlSerializer(typeof(ProductDocument)); // MemoryStream version MemoryStream stream = new MemoryStream(); XmlWriter xWriter = new XmlTextWriter(stream, Encoding.UTF8); StreamReader reader = new StreamReader(stream); //serializer.Serialize(stream, productDocument); // non scrive "encoding='utf-8'" serializer.Serialize(xWriter, productDocument); stream.Seek(0, SeekOrigin.Begin); string xmlString = reader.ReadToEnd(); stream.Close(); reader.Close(); return xmlString; }[/CODE]
Questo restituisce:
<?xml version="1.0" encoding="utf-8" ?>
<string xmlns="
http://www.pippo.it/service/">
[b]<?xml version="1.0" encoding="utf-8"?>[/b]<ProductDocument xmlns:xsi="
http://www.w3.org/2001/XMLSchema-instance"
ecc... ecc..
Invece vorrei usare una cosa del tipo:
[CODE]public static string SerializeProductDocument(ProductDocument productDocument) { XmlSerializer serializer = new XmlSerializer(typeof(ProductDocument)); // StringBuilder version StringBuilder sb = new StringBuilder(); TextWriter tWriter = new StringWriter(sb); XmlWriter xWriter = new XmlTextWriter(tWriter); serializer.Serialize(xWriter, productDocument); xWriter.Flush(); tWriter.Flush(); tWriter.Close(); xWriter.Close(); return sb.ToString(); }[/CODE]
che però mi restituisce:
<?xml version="1.0" encoding="utf-8" ?>
<string xmlns="
http://www.pippo.it/service/">
[b]<?xml version="1.0" encoding="utf-16"?>[/b]<ProductDocument xmlns:xsi="
http://www.w3.org/2001/XMLSchema-instance"
ecc... ecc...
Ovvero vorrei che l'oggetto string "Literal" contenuto nella risposta SOAP abbia l'encoding UTF-8 ma questo non mi è possibile impostarlo se al metodo .Serialize dell' XmlSerializer passo un XmlWriter, mentre è possibile se gli passo uno Stream.
( Facendo dei test il metodo con lo StringBuilder viene eseguito in circa 2 millisecondi mentre con il Memorystream ho circa 5 millisecondi. Quindi è solo un problema "concettuale", non di prestazioni)
Come altrimenti posso fare ?
Grazie, Alessandro.
Torna su
Stanze Forum
Elenco Threads
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?
Dopo esserti registrato potrai chiedere
aiuto sul nostro
Forum
oppure aiutare gli altri
Consulta le
Stanze
disponibili.
Registrati ora !