2 Stimmen

Laden von XML in C++ MSXML aus Byte-Array

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

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X