summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorBenjamin Paassen <bpaassen@techfak.uni-bielefeld.de>2015-02-17 15:11:03 +0100
committerBenjamin Paassen <bpaassen@techfak.uni-bielefeld.de>2015-02-17 15:11:03 +0100
commit878865b0c53196bc7b21edda423b83b4f14a88d5 (patch)
tree1956a41bd98ad3808a8f1d69b3fb9f646002acbf /src
parent295e0619f135ed6b3c200155beb20ffff03259fc (diff)
added namespace handling to XML
Diffstat (limited to 'src')
-rw-r--r--src/core/XML.cpp14
-rw-r--r--src/core/XML.hpp25
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 {