Hallo zusammen,
in XML müssen Sonderzeichen speziell codiert werden, siehe hierzu auch:
http://www.devtrain.de/news.aspx?artnr=296
Mit QDomDocument scheint das aber nicht zu klappen, die XML-Datei wird bei mir zumindest bei Sonderzeichen anstatt mit der Kodierung (z.B. "&# 223 ;" - ohne Space natürlich) erstellt. Kann mir einer sagen warum das so ist und wie man QDomDocument einstellen muss, dass es diese richtig kodiert?
Danke und Grüße,
Flummi
QDomDocument und Sonderzeichen
-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
Du musst selbst darauf achten dass im DomDocument korrekte Daten stehen. Siehe hier - zumindest ist das meine Interpretation der Doku.
Deshalb muss Du wohl, wenn Du eine solche Konvertierung willst, diese wie im anderen Thread schon gesagt, selbst durchführen. Sollte ja nicht so schwer sein.
Deshalb muss Du wohl, wenn Du eine solche Konvertierung willst, diese wie im anderen Thread schon gesagt, selbst durchführen. Sollte ja nicht so schwer sein.
MfG Christian
'Funktioniert nicht' ist keine Fehlerbeschreibung
'Funktioniert nicht' ist keine Fehlerbeschreibung
Re: QDomDocument und Sonderzeichen
Ich kenne das problem, frueher hatte ich das mit so einen filter geloest:flummi hat geschrieben:Hallo zusammen,
in XML müssen Sonderzeichen speziell codiert werden, siehe hierzu auch:
http://www.devtrain.de/news.aspx?artnr=296
Mit QDomDocument scheint das aber nicht zu klappen, die XML-Datei wird bei mir zumindest bei Sonderzeichen anstatt mit der Kodierung (z.B. "&# 223 ;" - ohne Space natürlich) erstellt. Kann mir einer sagen warum das so ist und wie man QDomDocument einstellen muss, dass es diese richtig kodiert?
Danke und Grüße,
Flummi
Code: Alles auswählen
static inline QString XHTML3Filter( QString stream )
{
QMap<uint,QString> webchars;
webchars.insert(8226,QString(" ")); /* • fake MS word */
webchars.insert(194,QString(" "));
webchars.insert(13,QString(""));
webchars.insert(10,QString(""));
QdocXhtml *convert = new QdocXhtml();
QString html = convert->Format(stream); /* tidy try to clean out asci */
for (int i = 0; i < html.size(); ++i) {
QChar sign = html.at(i);
const uint asciiPos = (uint)sign.unicode();
bool replaceUnis = false;
if ((asciiPos >= 240) && (asciiPos <= 255)) {
replaceUnis = true;
} else if ((asciiPos >= 224) && (asciiPos <= 239)) {
replaceUnis = true;
} else if ((asciiPos >= 192) && (asciiPos <= 223)) {
replaceUnis = true;
} else if ( asciiPos >7999 ) {
replaceUnis = true;
}
if (replaceUnis) {
/////////QString charU = QString("%1").arg(asciiPos);
///////QByteArray preU = QByteArray();
//////const int prepender = qBound(1,5 - charU.size(),5);
///////preU.fill('0',prepender);
///////const QString UnicodeChar = QString("&#%2%1").arg(charU).arg(preU.data());
const QString UnicodeChar = QString("&#%1").arg(asciiPos);
webchars.insert(asciiPos,UnicodeChar);
}
}
QMapIterator<uint,QString> i(webchars);
while (i.hasNext()) {
i.next();
html = html.replace(QChar(i.key()),i.value());
}
return html;
}
wenn irgendwas intern im qt programm passiert lasse ich es unveraendert
aber wenn es extern zu server geht dann nur mit tidylib...
Aus performance grunde habe ich immer gesucht es in einem buffer zu korrigieren.. so wie einem callback oder so... aber ich komme nicht vom file weg, vielleicht bringst du es hin.... las es mir wissen..
Iher die link zu eine qt4 gerechte lib...
http://fop-miniscribus.googlecode.com/s ... estqtidy.h
http://fop-miniscribus.googlecode.com/s ... ules/tidy/
.........................
speack português italiano deutsch english castellà qt
speack português italiano deutsch english castellà qt