aboutsummaryrefslogtreecommitdiff
path: root/src/QXmppUtils.cpp
diff options
context:
space:
mode:
authorJeremy Lainé <jeremy.laine@m4x.org>2010-08-19 15:04:28 +0000
committerJeremy Lainé <jeremy.laine@m4x.org>2010-08-19 15:04:28 +0000
commit84ebb6f53158f11a446bd9e2fd7ac78db96d3d74 (patch)
treea492783438d34aafd7a93be79bf3270e16522c00 /src/QXmppUtils.cpp
parentf829e0f23951115e0b5d27861643f887c1b5b4e0 (diff)
downloadqxmpp-84ebb6f53158f11a446bd9e2fd7ac78db96d3d74.tar.gz
QXmppUtils: add method for serialising a QDomElement
Diffstat (limited to 'src/QXmppUtils.cpp')
-rw-r--r--src/QXmppUtils.cpp36
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));