1/*
2 This file is part of the syndication library
3 SPDX-FileCopyrightText: 2006 Frank Osterfeld <osterfeld@kde.org>
4
5 SPDX-License-Identifier: LGPL-2.0-or-later
6*/
7
8#include "constants.h"
9#include "tools.h"
10
11#include <syndication/elementwrapper.h>
12#include <syndication/tools.h>
13
14#include <QDomElement>
15#include <QString>
16
17namespace Syndication
18{
19namespace Atom
20{
21QString extractAtomText(const Syndication::ElementWrapper &parent, const QString &tagname)
22{
23 QString str;
24
25 QDomElement el = parent.firstElementByTagNameNS(nsURI: atom1Namespace(), tagName: tagname);
26
27 bool isCDATA = el.firstChild().isCDATASection();
28
29 QString type = el.attribute(QStringLiteral("type"), QStringLiteral("text"));
30
31 if (type == QLatin1String("text")) {
32 str = parent.extractElementTextNS(namespaceURI: atom1Namespace(), localName: tagname).trimmed();
33 if (isCDATA) {
34 str = resolveEntities(str);
35 }
36
37 str = escapeSpecialCharacters(str);
38 } else if (type == QLatin1String("html")) {
39 str = parent.extractElementTextNS(namespaceURI: atom1Namespace(), localName: tagname).trimmed();
40 } else if (type == QLatin1String("xhtml")) {
41 str = ElementWrapper::childNodesAsXML(parent: el).trimmed();
42 }
43
44 return str;
45}
46
47} // namespace Atom
48} // namespace Syndication
49

source code of syndication/src/atom/atomtools.cpp