40 votes

Chargement de XML avec l'encodage UTF 16 à l'aide de XDocument

Je suis en train de lire le document xml à l'aide de XDocument méthode . mais j'obtiens une erreur lorsque le xml a

<?xml version="1.0" encoding="utf-16"?>

Quand j'ai enlevé l'encodage manuel.Il fonctionne parfaitement.

J'obtiens l'erreur " Il n'est pas Unicode marque d'ordre des octets. Impossible de passer en Unicode. "

j'ai essayé de chercher et j'ai atterri ici-->

Pourquoi est-ce que C# XmlDocument.LoadXml(string) ne parviennent pas quand un en-tête XML est-il inclus?

Mais n'a pas pu résoudre mon problème.

Mon code :

XDocument xdoc = XDocument.Load(path);

Des suggestions ??

je vous remercie.

62voto

Tuzo Points 14234

Il semble que le fichier que vous essayez de lire ne soit pas codé au format Unicode. Vous pouvez répliquer le comportement en essayant d'ouvrir un fichier codé en tant qu'ANSI avec le codage dans le fichier XML spécifié en tant que utf-16 .

Si vous ne pouvez pas vous assurer que le fichier est correctement codé, vous pouvez le lire dans un flux (en laissant les StreamReader détecter le codage), puis créer le XDocument :

 using (StreamReader sr = new StreamReader(path, true))
{
    XDocument xdoc = XDocument.Load(sr);
}
 

9voto

Sangram Points 2183

J'ai essayé et trouvé une autre façon de le faire !!

 XDocument xdoc = XDocument.Parse(System.IO.File.ReadAllLines(path));
 

6voto

Ce code:

 System.IO.File.ReadAllLines(path)
 

retourne un tableau de chaînes. Le code correct est:

 System.IO.File.ReadAllText(path)
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X