27#include <QtCore/QByteArray>
28#include <QtXml/QDomElement>
29#include <QtCore/QString>
30#include <QtCore/QStringList>
32namespace Syndication {
35class Content::ContentPrivate
39 ContentPrivate() : formatIdentified(false)
42 mutable Format format;
43 mutable bool formatIdentified;
50Content::Content(
const QDomElement& element) : ElementWrapper(element), d(new ContentPrivate)
64 ElementWrapper::operator=(other);
71 return attribute(QLatin1String(
"type"));
76 return completeURI(attribute(QLatin1String(
"src")));
83 return QByteArray::fromBase64(text().trimmed().toLatin1());
87static QStringList xmltypes;
96 if (
type.isNull() &&
src.isEmpty())
97 type = QLatin1String(
"text");
99 if (
type == QLatin1String(
"html")
100 ||
type == QLatin1String(
"text/html"))
103 if (
type == QLatin1String(
"text")
104 || (
type.startsWith(QLatin1String(
"text/"), Qt::CaseInsensitive)
105 && !
type.startsWith(QLatin1String(
"text/xml"), Qt::CaseInsensitive))
109 if (xmltypes.isEmpty())
111 xmltypes.append(QLatin1String(
"xhtml"));
112 xmltypes.append(QLatin1String(
"application/xhtml+xml"));
114 xmltypes.append(QLatin1String(
"text/xml"));
115 xmltypes.append(QLatin1String(
"application/xml"));
116 xmltypes.append(QLatin1String(
"text/xml-external-parsed-entity"));
117 xmltypes.append(QLatin1String(
"application/xml-external-parsed-entity"));
118 xmltypes.append(QLatin1String(
"application/xml-dtd"));
119 xmltypes.append(QLatin1String(
"text/x-dtd"));
122 if (xmltypes.contains(
type)
123 ||
type.endsWith(QLatin1String(
"+xml"), Qt::CaseInsensitive)
124 ||
type.endsWith(QLatin1String(
"/xml"), Qt::CaseInsensitive))
132 if (d->formatIdentified ==
false)
135 d->formatIdentified =
true;
147 return src().isEmpty();
171 return plainTextToHtml(text()).trimmed();
175 return text().trimmed();
179 return childNodesAsXML().trimmed();
188 info += QLatin1String(
"### Content: ###################\n");
189 info += QLatin1String(
"type: #") +
type() + QLatin1String(
"#\n");
191 info += QLatin1String(
"src: #") +
src() + QLatin1String(
"#\n");
193 info += QLatin1String(
"content: #") +
asString() + QLatin1String(
"#\n");
196 info += QLatin1String(
"binary length: #") + QString::number(
asByteArray().size()) + QLatin1String(
"#\n");
198 info += QLatin1String(
"### Content end ################\n");
The content element either contains or links the content of an entry.
QString debugInfo() const
returns a description of the content object for debugging purposes
QByteArray asByteArray() const
returns binary content as byte array.
bool isContained() const
returns whether the content is contained in the feed source, or not.
bool isEscapedHTML() const
returns whether the content is escaped HTML or not Use asString() to access it
bool isBinary() const
returns whether the content is binary content or not.
bool isPlainText() const
returns whether the content is plain text or not.
QString src() const
If src() is set, the content of this entry is not contained in the feed source, but available on the ...
Content()
creates a null content object.
Content & operator=(const Content &other)
assigns another content objecct
bool isXML() const
returns whether the content is embedded XML.
QString type() const
the type of the content.
Format format() const
returns the content format
QString asString() const
returns the content as string.
static Format mapTypeToFormat(const QString &type, const QString &src=QString())
maps a mimetype to Format enum according to the Atom 1.0 specification
Format
format of the content.
@ XML
the content is embedded XML
@ EscapedHTML
the content is escaped HTML, (i.e., "<", ">" etc.
@ PlainText
the content is plain text (i.e.
@ Binary
the content is base64-encoded binary content