2014-05-09 9 views
0

J'essaie de lire le fichier xml et de faire quelque chose avec xml. Mais j'ai un problème avec le chargement d'un fichier sur XmlDocument. Ici n'est pas erreur. Mais lors de la charge, programme crash et le compilateur dire:XmlDocument ne pas lire le fichier

Il n'y a pas de marque d'ordre d'octet Unicode. Impossible de passer à Unicode.

Voici mon code:

Microsoft.Win32.OpenFileDialog dlg = new Microsoft.Win32.OpenFileDialog(); 
dlg.Filter = "xml (*.xml)|*.xml"; 
if (dlg.ShowDialog() == true){ 
XmlDocument doc = new XmlDocument(); 
doc.Load(dlg.FileName); 

Répondre

1

Le fichier n'UNICODE Si vous n'êtes pas formez-vous que votre encodage que vous pouvez faire quelque chose comme:

// path + filename !! 
using (StreamReader streamReader = new StreamReader(dlg.FileName, true)) 
{ 
    XDocument xdoc = XDocument.Load(streamReader); 
} 

ou faire:

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

Lire le lien doit comprendre le problème. Solution @ZachBurlingame; Vous devez faire quelque chose comme ça:

Why does C# XmlDocument.LoadXml(string) fail when an XML header is included?

// Encode the XML string in a UTF-8 byte array 
byte[] encodedString = Encoding.UTF8.GetBytes(xml); 

// Put the byte array into a stream and rewind it to the beginning 
MemoryStream ms = new MemoryStream(encodedString); 
ms.Flush(); 
ms.Position = 0; 

// Build the XmlDocument from the MemorySteam of UTF-8 encoded bytes 
XmlDocument xmlDoc = new XmlDocument(); 
xmlDoc.Load(ms); 

Il doit travailler!

+1

XmlDoc devrait être capable de lire ASCII et Unicode sans une nomenclature. Mais cela pourrait être éducatif, user3058140 devrait l'exécuter dans le débogueur. –

+0

Soo XmlDocument ne fonctionne quand même pas? –

+1

Vérifiez l'en-tête XML s'il vous plaît voyez-vous quelque chose comme:

Questions connexes