Dateiformat von XML-Dateien ermitteln
Der Titel klingt wie ein Widerspruch in sich und doch gibt es Unterschiede
Ich mache gerade meine ersten Gehversuche mit System.xml und finde Unterschiede in den Formaten der XML-Dateien die ich lesen möchte:
Ein Teil sind ACSI-Dateien, ein anderer UTF-16 und den meisten fehlt die Formatangabe am Dateianfang (z.B. <?xml version="1.0" encoding="UTF-8"?>)
Ich kann zwar mit
bzw
und anschließendem
die XML-Dateien lesen, aber wie stelle ich vorher ihr Format fest, wenn die Formatangabe in den Dateien fehlt?
Die einzige Möglichkeit die ich bis jetzt sehe ist, die Formate der Reihe nach zu lesen versuchen und dann das Ergebnis zu prüfen.
Ein einfaches
führt z.B. bei UTF-16 Dateien ohne Header zum Fehler 'Ungültige Daten auf Stammebene. Zeile 1, Position 1.'
Danke fürs Lesen, Tussi
Ich mache gerade meine ersten Gehversuche mit System.xml und finde Unterschiede in den Formaten der XML-Dateien die ich lesen möchte:
Ein Teil sind ACSI-Dateien, ein anderer UTF-16 und den meisten fehlt die Formatangabe am Dateianfang (z.B. <?xml version="1.0" encoding="UTF-8"?>)
Ich kann zwar mit
fileReader == My.Computer.FileSystem.ReadAllText(path, System.Text.Encoding.Unicode)
bzw
fileReader == My.Computer.FileSystem.ReadAllText(path, System.Text.Encoding.ASCII)
und anschließendem
LoadXml(fileReader)
die XML-Dateien lesen, aber wie stelle ich vorher ihr Format fest, wenn die Formatangabe in den Dateien fehlt?
Die einzige Möglichkeit die ich bis jetzt sehe ist, die Formate der Reihe nach zu lesen versuchen und dann das Ergebnis zu prüfen.
Ein einfaches
xmlDocument.LoadXml(path)
Danke fürs Lesen, Tussi
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 174242
Url: https://administrator.de/contentid/174242
Ausgedruckt am: 22.11.2024 um 07:11 Uhr
4 Kommentare
Neuester Kommentar
Was spricht dagegen, die Datei direkt zu laden?
http://msdn.microsoft.com/de-de/library/system.xml.xmldocument.load(v=V ...
http://msdn.microsoft.com/de-de/library/system.xml.xmldocument.load(v=V ...