00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef SYNDICATION_ELEMENTWRAPPER_H
00023 #define SYNDICATION_ELEMENTWRAPPER_H
00024
00025 #include <QtCore/QString>
00026
00027 #include <boost/shared_ptr.hpp>
00028
00029 #include "ksyndication_export.h"
00030
00031 class QDomElement;
00032 template <class T> class QList;
00033
00034 namespace Syndication {
00035
00043 class SYNDICATION_EXPORT ElementWrapper
00044 {
00045 public:
00046
00051 ElementWrapper();
00052
00057 ElementWrapper(const ElementWrapper& other);
00058
00063 ElementWrapper(const QDomElement& element);
00064
00068 virtual ~ElementWrapper();
00069
00077 ElementWrapper& operator=(const ElementWrapper& other);
00078
00084 bool operator==(const ElementWrapper& other) const;
00085
00089 const QDomElement& element() const;
00090
00096 bool isNull() const;
00097
00106 QString xmlBase() const;
00107
00115 QString xmlLang() const;
00116
00135 QString completeURI(const QString& uri) const;
00136
00160 QString extractElementTextNS(const QString& namespaceURI,
00161 const QString& localName) const;
00162
00178 QString extractElementText(const QString& tagName) const;
00179
00188 QList<QDomElement> elementsByTagName(const QString& tagName) const;
00189
00196 QString childNodesAsXML() const;
00197
00215 static QString childNodesAsXML(const QDomElement& parent);
00216
00229 QList<QDomElement> elementsByTagNameNS(const QString& nsURI,
00230 const QString& tagName) const;
00231
00242 QDomElement firstElementByTagNameNS(const QString& nsURI,
00243 const QString& tagName) const;
00244
00249 QString text() const;
00250
00259 QString attribute(const QString& name,
00260 const QString& defValue=QString()) const;
00261
00272 QString attributeNS(const QString& nsURI, const QString& localName,
00273 const QString& defValue=QString()) const;
00274
00275
00282 bool hasAttribute(const QString& name) const;
00283
00291 bool hasAttributeNS(const QString& nsURI, const QString& localName) const;
00292
00293 private:
00294
00295 class ElementWrapperPrivate;
00296 boost::shared_ptr<ElementWrapperPrivate> d;
00297 };
00298
00299 }
00300
00301 #endif // SYNDICATION_ELEMENTWRAPPER_H