di.saveDocumentToFile(doc, filename, GDOME_SAVE_LIBXML_INDENT);
}
+std::string
+TDocument::makeId(unsigned id)
+{
+ ostringstream os;
+ os << "I" << id;
+ return os.str();
+}
+
TNode
TDocument::create(const std::string& name, unsigned id) const
{
DOM::Element elem = doc.createElementNS(TML_NS_URI, "tml:" + name);
- if (id > 0)
- {
- ostringstream os;
- os << "I" << id;
- elem.setAttribute("id", os.str());
- }
+ if (id > 0) elem.setAttribute("id", makeId(id));
return elem;
}
return DOM::Node(0);
}
+TNode
+TDocument::getNodeByIdAux(const TNode& node, const std::string& id)
+{
+ if (node.hasId(id)) return node;
+ else
+ for (TNode p = node.first(); p; p = p.next())
+ if (TNode res = getNodeByIdAux(p, id)) return res;
+ return TNode();
+}
+
+TNode
+TDocument::getNodeById(unsigned id) const
+{
+ DOM::Element root = doc.get_documentElement();
+ assert(root);
+ return getNodeByIdAux(root, makeId(id));
+}
+
void
TDocument::handleEvent(const DOM::Event& ev)
{