bool XmlConfigurationConverter::updateDocument(XmlDocument* document, std::string dtd, const Version& version, std::string rootElementName) { // update root element name XmlElement* root = document->getRootElement(); if (!root) { return false; } // if root->setName(rootElementName); // update version entry in root element if (root->hasAttribute("version")) { root->getAttribute("version")->setValue(version.toString()); } // if else { XmlAttribute* versionAttribute = new XmlAttribute("version", version.toString()); root->addAttribute(versionAttribute); } // else // update dtd reference XmlDtdReference* dtdRef = document->getDtd(); if (!dtdRef) { dtdRef = new XmlDtdReference(rootElementName, dtd); document->setDtd(dtdRef); } else { dtdRef->setName(rootElementName); dtdRef->setDtd(dtd); } // else return true; } // updateRootElement
XmlDoc & XmlDoc::seek(const QString & chemin, bool newElt, bool root) { if(root) begin(); bool controle = true; QList<QString> list(chemin.split("/")); for(QList<QString>::const_iterator i = list.cbegin(); controle && i != list.cend(); ++i) { QList< TreeItem<XmlElement> *>::const_iterator j = childs().cbegin(); while(j != childs().cend() && (*j)->data().name() != *i) ++j; if(j == childs().cend()) { controle = false; if(newElt) { XmlElement elt; for(; i != list.cend(); ++i) { elt.setName(*i); addChild(elt); } } else { m_i = m_root; } } else { m_i = *j; } } return *this; }