c# - Chargement de xml avec encodage UTF 16 en utilisant XDocument




winforms visual-studio-2008 unicode (4)

J'essaye de lire le document XML en utilisant la méthode XDocument. mais je reçois une erreur quand xml a

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

Quand j'ai enlevé l'encodage manuellement. Cela fonctionne parfaitement.

Je reçois une erreur " Il n'y a pas de marque de commande d'octet Unicode. Impossible de passer à Unicode. "

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

Pourquoi C # XmlDocument.LoadXml (chaîne) échoue-t-il lorsqu'un en-tête XML est inclus?

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

Mon code:

XDocument xdoc = XDocument.Load(path);

Aucune suggestion ??

Je vous remercie.


Answers

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

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

Il semble que le fichier que vous essayez de lire ne soit pas encodé en Unicode. Vous pouvez répliquer le comportement en essayant d'ouvrir un fichier codé en 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 codé correctement, vous pouvez lire le fichier dans un flux (en laissant StreamReader détecter l'encodage), puis créer le XDocument :

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

Ce code:

System.IO.File.ReadAllLines(path)

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

System.IO.File.ReadAllText(path)

En plus du commentaire de W0lands ci-dessus, la même chose s'applique lors de la construction de projets Unity3D pour Windows 8. Vous devrez également utiliser XDocument dans ce scénario.







c# xml winforms visual-studio-2008 unicode