2009-12-19 14 views
5

Ho cercato di trovare del codice per questo lavoro nei tutorial e su google, senza fortuna.Esempio di codice per l'analisi XML Unicode utilizzando PugiXML

Se qualcuno ha usato PugiXml, potrebbe aiutarmi per favore?

Il mio problema principale è Unicode, altrimenti la libreria è molto facile da usare.

Grazie in anticipo.

+0

vedo che PugiXML attualmente presuppone che tutti gli input è UTF-8. Stai riscontrando problemi nell'analisi di un file UTF-8 o stai cercando di utilizzare PugiXML con wchar_t/wstring o ...? – ZoogieZork

+0

Attualmente sto cercando di usare una matrice wchar_t [] per memorizzare i dati. – Wartin

+0

Sembra che la chiave sia usare 'pugi :: as_utf8()' per passare dati wchar_t a PugiXML e 'pugi :: as_utf16()' per ottenere i dati di wchar_t. Presumo che tutte le stringhe char * utilizzate da PugiXML siano UTF-8, ma non è chiaro dalla documentazione. – ZoogieZork

risposta

0

Aprire pugiconfig.hpp e uncomment PUGIXML_WCHAR_MODE.

Ora è possibile utilizzare rispettivamente wchar_t e std :: wstring invece di char e std :: string.

Quick Start è qui: http://pugixml.googlecode.com/svn/tags/latest/docs/quickstart.html

+0

Che cosa ha a che fare questo con Unicode? UTF-8 è una codifica Unicode perfettamente valida. –

+0

@Nicol Bolas Dipende dalla piattaforma. Su Windows non puoi inserire un carattere Unicode in tipo char. Deve essere wchar_t. http://stackoverflow.com/questions/402283/stdwstring-vs-stdstring – junglecat

+0

Innanzitutto, Unicode non ha caratteri; ha punti di codice, unità di codice e grafemi. In secondo luogo, UTF-8 ** è una codifica Unicode perfettamente valida **; la piattaforma su cui stai lavorando è * irrilevante * per questo. UTF-8 non smette di funzionare solo perché sei su Windows. Sì, per aprire un file il cui nome non utilizza caratteri ASCII, è necessario convertirlo in UTF-16 su Windows. Ma si tratta dell'interfaccia API, non della natura di "Unicode". Microsoft non stabilisce cosa significa "Unicode". –