diff options
author | Benjamin Paassen <bpaassen@techfak.uni-bielefeld.de> | 2015-02-17 15:11:03 +0100 |
---|---|---|
committer | Benjamin Paassen <bpaassen@techfak.uni-bielefeld.de> | 2015-02-17 15:11:03 +0100 |
commit | 878865b0c53196bc7b21edda423b83b4f14a88d5 (patch) | |
tree | 1956a41bd98ad3808a8f1d69b3fb9f646002acbf /src | |
parent | 295e0619f135ed6b3c200155beb20ffff03259fc (diff) |
added namespace handling to XML
Diffstat (limited to 'src')
-rw-r--r-- | src/core/XML.cpp | 14 | ||||
-rw-r--r-- | src/core/XML.hpp | 25 |
2 files changed, 25 insertions, 14 deletions
diff --git a/src/core/XML.cpp b/src/core/XML.cpp index 0aedbd9..e25d18a 100644 --- a/src/core/XML.cpp +++ b/src/core/XML.cpp @@ -71,7 +71,11 @@ void Element::doSerialize(std::ostream &out, unsigned int tabdepth, bool pretty) out << '\t'; } } - out << '<' << name; + out << '<'; + if(!nspace.empty()){ + out << nspace << ":"; + } + out << name; for (auto &a : attributes) { out << ' ' << a.first << "=\"" << escapePredefinedEntities(a.second) << '\"'; @@ -95,7 +99,11 @@ void Element::doSerialize(std::ostream &out, unsigned int tabdepth, bool pretty) out << '\t'; } } - out << "</" << name << ">"; + out << "</"; + if(!nspace.empty()){ + out << nspace << ":"; + } + out << name << ">"; if (pretty) { out << std::endl; } @@ -125,7 +133,7 @@ namespace RttiTypes .composedOf(&XMLNode) .property("name", {&RttiTypes::String, {[](const xml::Element *obj) { - return Variant::fromString(obj->name); + return Variant::fromString(obj->getName()); }}}); const Rtti XMLText = RttiBuilder<xml::Text>("XMLText").parent(&XMLNode); } diff --git a/src/core/XML.hpp b/src/core/XML.hpp index a1021d3..02b0d89 100644 --- a/src/core/XML.hpp +++ b/src/core/XML.hpp @@ -113,22 +113,19 @@ public: class Element : public Node { private: ManagedVector<Node> children; - -public: - const std::string name; std::map<std::string, std::string> attributes; + const std::string nspace; + const std::string name; - Element(Manager &mgr, Handle<Element> parent, std::string name) - : Node(mgr, parent), children(this), name(std::move(name)) - { - } - +public: Element(Manager &mgr, Handle<Element> parent, std::string name, - std::map<std::string, std::string> attributes) + std::map<std::string, std::string> attributes = {}, + std::string nspace = "") : Node(mgr, parent), children(this), - name(std::move(name)), - attributes(std::move(attributes)) + attributes(std::move(attributes)), + nspace(std::move(nspace)), + name(std::move(name)) { } @@ -151,10 +148,16 @@ public: children.insert(children.end(), c.begin(), c.end()); } + const std::string &getNamespace() const { return nspace; } + + const std::string &getName() const { return name; } + const std::map<std::string, std::string> &getAttributes() const { return attributes; } + + std::map<std::string, std::string> &getAttributes() { return attributes; } }; class Text : public Node { |