beispiel feed http://rss.cnn.com/rss/cnn_world.rss
Mit eine einzige funktion hole ich alle parameter....
Code: Alles auswählen
typedef QMap<int, QStringList> RssParams;
/* read a static rss version 1/2 file and return QMap params of link title description */
RssParams ReadRssFile( QString fileplace , int limiter )
{
RssParams contingent;
QFile xmlfile( fileplace );
QString errorStr, obname, inhalt;
int errorLine, errorColumn, position;
position = 0 -1;
QDomDocument doc("RSS");
if(!xmlfile.open( QIODevice::ReadOnly ) ) {
return contingent;
}
if (!doc.setContent(&xmlfile,true, &errorStr, &errorLine, &errorColumn)) {
xmlfile.close();
return contingent;
}
QDomElement root = doc.documentElement();
QDomElement chanelbase = root.firstChildElement("channel");
QDomElement child = chanelbase.firstChildElement("item");
while (!child.isNull()) {
QString title = child.firstChildElement("title").text();
QString desc = child.firstChildElement("description").text();
QString urirss = child.firstChildElement("link").text();
if (!title.isEmpty() and !desc.isEmpty() and !urirss.isEmpty()) {
position++;
if (position < limiter) {
contingent.insert(position,QStringList() << encodeBase64(urirss) << encodeBase64(title) << encodeBase64(desc));
}
}
child = child.nextSiblingElement("item");
}
xmlfile.close();
return contingent;
}
und auslesen der paramenter .....
Code: Alles auswählen
/* read params */
/* deklaration */
int sums;
RssParams pollparam;
QStringList rssreader;
pollparam = ReadRssFile("file.xml",10);
sums = pollparam.size();
rssreader.clear();
RssParams::Iterator it;
for ( it = pollparam.begin(); it != pollparam.end(); ++it ) {
QStringList dx = it.value();
QString ruri = decodeBase64(QString(dx.at(0)));
QString rtit = Replas(decodeBase64(QString(dx.at(1))));
QString rdes = Replas(decodeBase64(QString(dx.at(2))));
QString preline = QString("Des-> %1\n").arg(rdes);
QString rspiline = QString( "NR.xx Uri-> %1\nTit-> %2\n%3" ).arg( ruri , rtit , rdes );
rssreader.append(rspiline);
}
QString LineALL = rssreader.join("\n");
Ich codiere den Inhalt zu Base64 damit ich in der datenbank keine quote problemen habe ....
Code: Alles auswählen
/* encode to name */
QString encodeBase64( QString xml )
{
QByteArray text;
text.append(xml);
return text.toBase64();
}
/* decode to name */
QString decodeBase64( QString xml )
{
QByteArray xcode("");;
xcode.append(xml);
QByteArray precode(QByteArray::fromBase64(xcode));
QString notetxt = precode.data();
return notetxt;
}
Falls jemand es noch einfacher machen kann .... bin fuer jedes komment dankbar....