Toon posts:

[XML / C#] Encoding probleem

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb een XML-bestand met de volgende inhoud:
XML:
1
<?xml version="1.0" encoding="UTF-8"?><RECEIVE_REPLY><REQUEST_ID></REQUEST_ID><RESULT_CODE>0</RESULT_CODE><PAYLOAD>&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;&lt;ProductCatalog&gt;&lt;destinationInfo PartnerID=&quot;

Volgens de documentatie is 2x UTF-8 encodering toegepast, echter als ik het bestand inlees en vervolgens gedecodeerd opsla is er helemaal niks veranderd.
C#:
1
 string content = File.ReadAllText(location,  Encoding.UTF8); 

Een XML-reader gebruiken is al helemaal geen optie, deze herkent de XML-nodes niet, omdat deze als html-code in het document staan (bijv.
XML:
1
&gt;
moet zijn '>') dit laatste kan ik nog wel als losse vervanging uitvoeren maar is dit nodig? Of kan ik er op een of andere manier toch voor zorgen dat ik het bestand goed inlees of is het aangeleverde bestand gewoon niet juist?

  • RedBeard
  • Registratie: April 2006
  • Niet online
Voorzover ik het in kan schatten is het aangeleverde bestand gewoon niet goed.

Je kan de veschillende &gt ,&lt, &quot tuurlijk zelf vervangen

I'm not anti-social, I'm just not user friendly


  • _Thanatos_
  • Registratie: Januari 2001
  • Laatst online: 23-12-2025

_Thanatos_

Ja, en kaal

Specifieker: het aangeleverde bestand is niet volledig. De "binnenste" XML is gewoon een string, maar die wordt niet afgesloten met </PAYLOAD> en de rest.

Maar afgezien daarvan, het *gaat* problemen geven als je op deze manier xml-in-xml gaat versturen. Dubbel encoden is gewoon not-done en vooral overbodig. Als mogelijk, zou ik het bestand zo opmaken dat de nodes van de binnenste XML als doodnormale nodes in de buitenste XML staan. De encoding van de buitenste XML wordt dan (uiteraard) gebruikt en dat geeft geen problemen. De encoding boeit inhoudelijk verder toch niet zoveel.

[ Voor 3% gewijzigd door _Thanatos_ op 20-04-2006 13:01 ]

日本!🎌


  • bigbeng
  • Registratie: Augustus 2000
  • Laatst online: 26-11-2021
Ik mis sowieso de sluittags van PAYLOAD en van RECEIVEREPLY, dus dat document is al geen well-formed xml.

Je zult de inhoud van de PAYLOAD tag opnieuw door een parser moeten halen als je die als nodes ingelezen wilt hebben.

Verwijderd

Topicstarter
Allemaal bedankt voor de reacties, ik had niet het volledige document geplaatst (niet bij nagedacht), en de XML zelf zit wel gewoon goed in elkaar. Inmiddels is het gelukt, ik gebruik een HtmlDecode (C#) en het bestand blijkt ook nog eens 2 keer UTF-8 ge-encodeerd te zijn... :|

Het gaat nu allemaal goed, krijg het ook maar zo aangeleverd, zou het zelf nooit zo gemaakt hebben maarja.... Eventuele speciale karakters in de element-content zijn dubbel ge-encodeerd....

Verwijderd

Topicstarter
Iemand toevallig ook nog een idee hoe ik een UTF-8 decode doe in C# ? In php is het gewoon utf8_decode maar voor C# kan ik er weinig over vinden....

  • _Thanatos_
  • Registratie: Januari 2001
  • Laatst online: 23-12-2025

_Thanatos_

Ja, en kaal

De UTF8Encoding class is je vriend :)

日本!🎌

Pagina: 1