aboutsummaryrefslogtreecommitdiff
path: root/src/server/QXmppServer.cpp
diff options
context:
space:
mode:
authorJeremy Lainé <jeremy.laine@m4x.org>2012-04-20 14:56:33 +0000
committerJeremy Lainé <jeremy.laine@m4x.org>2012-04-20 14:56:33 +0000
commitd648473c16ac3fe5ce4f4b79c188b9bade381425 (patch)
tree65dda40ce4b391815535f052fb8cbde2d4724959 /src/server/QXmppServer.cpp
parent5940e91a4af209e7d3adbe90e98c4ff953993198 (diff)
downloadqxmpp-d648473c16ac3fe5ce4f4b79c188b9bade381425.tar.gz
hide an internal method
Diffstat (limited to 'src/server/QXmppServer.cpp')
-rw-r--r--src/server/QXmppServer.cpp30
1 files changed, 30 insertions, 0 deletions
diff --git a/src/server/QXmppServer.cpp b/src/server/QXmppServer.cpp
index 529cb910..02fbd402 100644
--- a/src/server/QXmppServer.cpp
+++ b/src/server/QXmppServer.cpp
@@ -41,6 +41,36 @@
#include "QXmppServerPlugin.h"
#include "QXmppUtils.h"
+static 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();
+}
+
class QXmppServerPrivate
{
public: