Erreur: la déclaration XML doit être le premier nœud du document.

J’obtiens une “déclaration XML inattendue. La déclaration XML doit être le premier nœud du document et aucun caractère d’espace blanc ne doit apparaître avant” erreur lors de la tentative de chargement de XML. Mon code C # et le contenu du fichier XML sont indiqués ci-dessous. La définition XML existe dans la ligne 6 du fichier XML et par conséquent l’erreur.

Je ne peux pas contrôler ce qu’il y a dans le fichier xml alors comment puis-je le modifier / réécrire en utilisant C # de telle sorte que la déclaration xml vienne en premier et ensuite les commentaires pour le charger sans erreur!

//xmlFilepath is the path/name of the xml file passed to this function static function(ssortingng xmlFilepath) { XmlReaderSettings readerSettings = new XmlReaderSettings(); readerSettings.IgnoreComments = true; readerSettings.IgnoreWhitespace = true; XmlReader reader = XmlReader.Create(XmlFilePath, readerSettings); XmlDocument xml = new XmlDocument(); xml.Load(reader); } 

XmlDoc.xml

      ----- 

Lorsque l’erreur indique, les cinq premiers caractères d’un document XML doivent être . Pas de si, de et, ou de mais. Les commentaires que vous avez au-dessus de la balise XML d'ouverture sont illégaux. ils doivent aller à l'intérieur de la balise XML (car la structure de commentaire est elle-même définie par le standard XML et n'a donc aucun sens en dehors des balises XML principales).

EDIT: Quelque chose comme ceci devrait pouvoir réorganiser les lignes, étant donné le format de fichier de l'OP:

 var lines = new List(); using (var fileStream = File.Open(xmlFilePath, FileMode.Open, FileAccess.Read)) using(var reader = new TextReader(fileStream)) { ssortingng line; while((line = reader.ReadLine()) != null) lines.Add(line); } var i = lines.FindIndex(s=>s.StartsWith(" 

Ce n’est pas XML valide.

Comme le dit clairement l’erreur, la déclaration XML ( ) Doit venir en premier .

J’utilise la fonction suivante pour supprimer les espaces du code XML:

 public static void DoRemovespace(ssortingng strFile) { ssortingng str = System.IO.File.ReadAllText(strFile); str = str.Replace("\n", ""); str = str.Replace("\r", ""); Regex regex = new Regex(@">\s*<"); string cleanedXml = regex.Replace(str, "><"); System.IO.File.WriteAllText(strFile, cleanedXml); } 

Ne mettez pas de commentaires au début de votre fichier!