xml.LoadData - Daten auf der Stammebene sind ungültig. Linie 1, Position 1
Ich versuche zu analysieren, einige XML in ein WiX-installer. Das XML würde ein Gegenstand, der alle meine Fehler zurückgegeben, die von einem web-server. Ich bin immer der Fehler in der Frage-Titel mit diesem code:
XmlDocument xml = new XmlDocument();
try
{
xml.LoadXml(myString);
}
catch (Exception ex)
{
System.IO.File.WriteAllText(@"C:\text.txt", myString + "\r\n\r\n" + ex.Message);
throw ex;
}
myString
ist dies (wie in der Ausgabe von text.txt
)
<?xml version="1.0" encoding="utf-8"?>
<Errors></Errors>
text.txt
kommt der aussah wie dieser:
<?xml version="1.0" encoding="utf-8"?>
<Errors></Errors>
Data at the root level is invalid. Line 1, position 1.
Brauche ich das XML zu Parsen, damit ich sehen kann, ob ich irgendwelche Fehler.
Bearbeiten
Diese Frage ist nicht doppelt markiert. In dieser Frage, die person zu Fragen, die Frage war mit LoadXml
zu Parsen einer XML-Datei. Ich bin Parsen einen string, der den richtigen Umgang mit den LoadXml
InformationsquelleAutor der Frage Chris | 2013-07-22
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den versteckten Charakter ist wohl Stückliste.
Die Erklärung für das problem und die Lösung gefunden werden kann hier, credits zu James Schubert, basierend auf eine Antwort von James Brankin gefunden hier.
Obwohl die Vorherige Antwort nicht entfernen Sie die versteckten Charakter, es beseitigt auch die ganze erste Zeile. Die genauere version wäre:
Traf ich dieses problem beim abrufen einer XSLT-Datei aus dem Azure-blob und laden Sie es in ein XslCompiledTransform-Objekt.
Auf meinem Rechner die Datei sah Prima aus, aber nach dem hochladen als blob und Holen es zurück, das BOM-Zeichen Hinzugefügt wurde.
InformationsquelleAutor der Antwort Amit Merin
Verwenden
Load()
Methode statt, es wird das problem lösen. Sehen Sie mehrInformationsquelleAutor der Antwort HICURIN
Das Problem hier war, dass
myString
hatte, dass der Kopfzeile. Entweder gab es einige versteckte Zeichen an den Anfang der ersten Zeile oder der Zeile selbst war, der den Fehler verursacht. Ich abgeschnitten die erste Zeile in etwa so:Dies ist mein problem gelöst.
InformationsquelleAutor der Antwort Chris
Ich Denke, das problem ist die Kodierung. Deshalb entfernen der ersten Zeile(mit Codierung byte) könnte das problem lösen.
Meine Lösung für Daten auf der Stammebene sind ungültig. Zeile 1, position 1.
in
XDocument.Parse(xmlString)
war, ersetzen Sie es mitXDocument.Load( new MemoryStream( xmlContentInBytes ) );
Habe ich bemerkt, dass mein xml-string sah ok aus:
aber in verschiedenen text-editor-Codierung, sah es so aus:
Am Ende brauchte ich nicht, der string xml, sondern xml byte[]. Wenn Sie brauchen, um verwenden Sie die Zeichenfolge, die Sie suchen sollten "unsichtbar" bytes in den string und spielen mit Codierungen anpassen der xml-Inhalte für die Analyse oder laden.
Hoffe, es wird helfen,
InformationsquelleAutor der Antwort pawciu
Speichern Sie Ihre Datei mit den verschiedenen encoding:
Datei > Speichern unter... > Speichern als UTF-8 ohne Signatur.
In VS 2017 finden Sie die Codierung als dropdown neben Schaltfläche Speichern.
InformationsquelleAutor der Antwort MikeMajara
Wenn Ihre xml-Daten in eine Zeichenfolge verwenden Sie die folgenden zu entfernen, keine byte order mark:
InformationsquelleAutor der Antwort Mister Cook