Ich empfange XML über einen Netzwerk-Socket. Ich muss diese XML-Datei nehmen und in das DOM laden, um weitere Operationen durchzuführen. MSXML erfordert Eingabezeichenfolgen, die entweder in UCS-2 oder UTF-16 vorliegen, und ignoriert den XML-Header mit dem Kodierungstyp beim Laden aus einer Zeichenfolge vollständig. Es erlaubt das Laden von XML-Fragmenten, so dass dies einen gewissen Sinn ergibt.
Ich sehe zwei Möglichkeiten, dieses Problem zu lösen:
1) Schreiben Sie die Datei auf die Festplatte und laden Sie sie über Dateipfade in MSXML. Aufgrund der zusätzlichen E/A auf der Festplatte ist dieser Ansatz bei weitem nicht vorzuziehen.
2) Peak in den XML-Header, um die Kodierung manuell zu erkennen und dann MultiByteToWideChar aufzurufen, um in UTF-16 zu konvertieren und die Codepage auf der Grundlage der erkannten Kodierung anzugeben. Dieser Ansatz funktioniert gut, aber ich möchte die Kodierungserkennung auf MSXML übertragen.
Hat jemand eine andere Idee, wie dies zu bewerkstelligen ist?
Ich habe mir keine anderen XML-Parser angesehen, wäre aber daran interessiert, wie Nicht-MSXML-DOM-Parser dies bewerkstelligen.
Danke! Paul