diff options
| author | Jeremy Lainé <jeremy.laine@m4x.org> | 2010-08-19 15:04:28 +0000 |
|---|---|---|
| committer | Jeremy Lainé <jeremy.laine@m4x.org> | 2010-08-19 15:04:28 +0000 |
| commit | 84ebb6f53158f11a446bd9e2fd7ac78db96d3d74 (patch) | |
| tree | a492783438d34aafd7a93be79bf3270e16522c00 /src/QXmppUtils.cpp | |
| parent | f829e0f23951115e0b5d27861643f887c1b5b4e0 (diff) | |
| download | qxmpp-84ebb6f53158f11a446bd9e2fd7ac78db96d3d74.tar.gz | |
QXmppUtils: add method for serialising a QDomElement
Diffstat (limited to 'src/QXmppUtils.cpp')
| -rw-r--r-- | src/QXmppUtils.cpp | 36 |
1 files changed, 35 insertions, 1 deletions
diff --git a/src/QXmppUtils.cpp b/src/QXmppUtils.cpp index 49de22dd..4f8b84f2 100644 --- a/src/QXmppUtils.cpp +++ b/src/QXmppUtils.cpp @@ -1,8 +1,9 @@ /* * Copyright (C) 2008-2010 The QXmpp developers * - * Author: + * Authors: * Manjeet Dahiya + * Jeremy Lainé * * Source: * http://code.google.com/p/qxmpp @@ -27,8 +28,10 @@ #include <QCryptographicHash> #include <QDateTime> #include <QDebug> +#include <QDomElement> #include <QRegExp> #include <QString> +#include <QStringList> #include <QXmlStreamWriter> #include "QXmppUtils.h" @@ -218,6 +221,37 @@ void helperToXmlAddAttribute(QXmlStreamWriter* stream, const QString& name, stream->writeAttribute(name,value); } +void helperToXmlAddDomElement(QXmlStreamWriter* stream, const QDomElement& element, const QStringList &omitNamespaces) +{ + stream->writeStartElement(element.tagName()); + + /* attributes */ + QString xmlns = element.namespaceURI(); + if (!xmlns.isEmpty() && !omitNamespaces.contains(xmlns)) + stream->writeAttribute("xmlns", xmlns); + QDomNamedNodeMap attrs = element.attributes(); + for (int i = 0; i < attrs.size(); i++) + { + QDomAttr attr = attrs.item(i).toAttr(); + stream->writeAttribute(attr.name(), attr.value()); + } + + /* children */ + QDomNode childNode = element.firstChild(); + while (!childNode.isNull()) + { + if (childNode.isElement()) + { + helperToXmlAddDomElement(stream, childNode.toElement(), QStringList() << xmlns); + } else if (childNode.isText()) { + stream->writeCharacters(childNode.toText().data()); + } + childNode = childNode.nextSibling(); + } + stream->writeEndElement(); +} + + void helperToXmlAddNumberElement(QXmlStreamWriter* stream, const QString& name, int value) { stream->writeTextElement( name, QString::number(value)); |
