QString xmlnode_to_string(QDomNode xmldata){ QDomDocument tempdoc; if(!xmldata.isNull()) { tempdoc.appendChild(xmldata.cloneNode()); return tempdoc.toString(); } else return "";}
QDomDocument doc; QDomElement elm=doc.createElement("content"); qDebug() << "New element " << xmlnode_to_string(elm);
// Коструирование DOM документа для записи в файл QDomDocument doc; // Установка заголовка doc.createProcessingInstruction("xml", "version=\"1.0\" encoding=\"UTF-8\""); // Установка формата версии QDomElement formvers=doc.createElement("format"); formvers.setAttribute("version",1); formvers.setAttribute("subversion",1); doc.appendChild(formvers); qDebug() << "Doc document for write " << doc.toString(); // Запись DOM данных в файл QString filename="file.xml"; QFile wfile(filename); if (!wfile.open(QIODevice::WriteOnly | QIODevice::Text)) { qDebug() << "Cant open file " << filename << " for write."; exit(1); } QTextStream out(&wfile); out.setCodec("UTF-8"); out << doc.toString();
QString xmlstr = "<?xml version=\"1.0\"?><!DOCTYPE letter [<!ENTITY title \"title text\">]>\ <letter>&title;</letter>"; QDomDocument doc; doc.setContent(xmlstr, true); qDebug() << doc.toString();
<?xml version='1.0'?><!DOCTYPE letter><letter>title text</letter>
QDomDocument doc; QDomElement elm=doc.createElement("content"); // - "оторванная" ветка doc.appendChild(elm); // - нормальная ветка qDebug() << "New element " << xmlnode_to_string(elm);
// Так НЕ работает qDebug() << "\n It is NOT work"; QDomDocument doca1; QDomElement elma=doca1.createElement("content"); // Создаем элемент QDomDocument doca2; // doca2.appendChild(elma); // Прикрепляем элемент к ПУСТОМУ документу qDebug() << "Document a2 " << doca2.toString(); // Так работает qDebug() << "\n It is work"; QDomDocument docb1; QDomElement elmb=docb1.createElement("content"); // Создаем элемент QDomDocument docb2("debugdoc"); docb2.appendChild(elmb); // Прикрепляем элемент к НЕПУСТОМУ документу (т.к. при создании был передан DOCTYPE "debugdoc") qDebug() << "Document b2 " << docb2.toString(); // Так работает qDebug() << "\n It is work"; QDomDocument docc; QDomElement elmc=docc.createElement("content"); // Создаем элемент docc.appendChild(elmc); // Прикрепляем элемент к ПУСТОМУ документу, но элемент был создан через createElement() данного документа qDebug() << "Document c " << docc.toString();
It is NOT workCalling appendChild() on a null node does nothing.Document a2 "" It is workDocument b2 "<!DOCTYPE debugdoc><content/>" It is workDocument c "<content/>"
// Так работает qDebug() << "\n It is work"; QDomDocument doc1; QDomElement elm1=doc1.createElement("content"); // Создаем элемент QDomDocument doc2; // QDomElement elm2=doc2.createElement("stub"); // Создаем элемент-вспомогалку, который является "оторванным", но создание которого повлияло на doc2 и сделало doc2 НЕПУСТЫМ doc2.appendChild(elm1); // Прикрепляем элемент к ТИПА_ПУСТОМУ документу qDebug() << "Document " << doc2.toString();
It is workDocument "<content/>"
Calling appendChild() on a null node does nothing.""
QDomElement elm=doc.createElement("content"); // - "оторванная" ветка qDebug() << "New element " << xmlnode_to_string(elm);
New element "<!DOCTYPE debugdoc><content/>"
QString xmlnode_to_string(QDomNode xmldata){ QDomDocument tempdoc; // Создаем элемент-вспомогалку, который нигде не используется, но создание которого // влияет на tempdoc, делая этот докумен ненулевым QDomElement tempelm=tempdoc.createElement("stub"); if(!xmldata.isNull()) { tempdoc.appendChild(xmldata.cloneNode()); return tempdoc.toString(); } else return "";}
New element "<content/>"
QDomDocument doc("myxmldoc"); QDomProcessingInstruction instr = doc.createProcessingInstruction("xml", "version=\"1.0\" encoding=\"UTF-8\""); doc.appendChild(instr); QDomElement root = doc.createElement("root"); doc.appendChild(root); //snip IBResult db_res = IBElement::list(_filter, _sorting); while(db_res.next()) { QDomElement element = doc.createElement("element"); element.setAttribute("id", db_res.value("ID").toString()); root.appendChild(element); }
QDomDocument doc;QDomElement elm = doc.createElement("element");