00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #include "constants.h"
00023 #include "tools.h"
00024
00025 #include <syndication/elementwrapper.h>
00026 #include <syndication/tools.h>
00027
00028 #include <QtXml/QDomElement>
00029 #include <QtCore/QString>
00030
00031 namespace Syndication {
00032
00033 namespace Atom {
00034
00035 QString extractAtomText(const Syndication::ElementWrapper& parent, const QString& tagname)
00036 {
00037 QString str;
00038
00039 QDomElement el = parent.firstElementByTagNameNS(atom1Namespace(), tagname);
00040
00041 bool isCDATA = el.firstChild().isCDATASection();
00042
00043 QString type = el.attribute(QString::fromUtf8("type"), QString::fromUtf8("text"));
00044
00045 if (type == QString::fromUtf8("text"))
00046 {
00047 str = parent.extractElementTextNS(atom1Namespace(), tagname).trimmed();
00048 if (isCDATA)
00049 str = resolveEntities(str);
00050
00051 str = escapeSpecialCharacters(str);
00052 }
00053 else if (type == QString::fromUtf8("html"))
00054 {
00055 str = parent.extractElementTextNS(atom1Namespace(), tagname).trimmed();
00056 }
00057 else if (type == QString::fromUtf8("xhtml"))
00058 {
00059 str = ElementWrapper::childNodesAsXML(el).trimmed();
00060 }
00061
00062 return str;
00063 }
00064
00065 }
00066 }
00067
00068