J'essaie de lire le document xml en utilisant la méthode XDocument. mais je reçois une erreur lorsque xml a
<?xml version="1.0" encoding="utf-16"?>
Lorsque j'ai supprimé l'encodage manuellement, cela fonctionne parfaitement.
J'obtiens une erreur " Il n'y a pas de marque d'ordre d'octets Unicode. Impossible de passer en Unicode. "
j'ai essayé de chercher et j'ai atterri ici ->
Pourquoi C # XmlDocument.LoadXml (chaîne) échoue lorsqu'un en-tête XML est inclus?
Mais ne pouvait pas résoudre mon problème.
Mon code:
XDocument xdoc = XDocument.Load(path);
Aucune suggestion ??
merci.
Il semble que le fichier que vous essayez de lire ne soit pas codé en Unicode. Vous pouvez répliquer le comportement en essayant d'ouvrir un fichier encodé en ANSI avec l'encodage dans le fichier XML spécifié comme 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 le StreamReader
détecter l'encodage), puis créer le XDocument
:
using (StreamReader sr = new StreamReader(path, true))
{
XDocument xdoc = XDocument.Load(sr);
}
J'ai essayé et j'ai trouvé une autre façon de le faire !!
XDocument xdoc = XDocument.Parse(System.IO.File.ReadAllLines(path));
Ce code:
System.IO.File.ReadAllLines(path)
renvoie un tableau de chaînes. Le bon code est:
System.IO.File.ReadAllText(path)