Всем приве!
Задача такая: нужно взять элемент из одного файла и записань в другой.
//запускаем проход xml
void irReleaseXML::traverseNodeRun(QString str)
{
QFile file1(str);
QDomDocument docXML;
QDir a;
a.mkdir("XMLrelease");
if(file1.open(QIODevice::ReadWrite))
{
if(docXML.setContent(&file1))
{
QDomElement domElement = docXML.documentElement();
traverseNode(domElement);
}
file1.close();
}
}
void irReleaseXML::traverseNode(const QDomNode &node)
{
//присваиваем domNode первый элемент из XML файла
QDomNode domNode=node.firstChild();
while(!domNode.isNull())
{
QDomElement domElement = domNode.toElement();
if(domNode.isElement())
{
if(!domElement.isNull())
{
if(domElement.tagName() == "level")
{
QString bufLevel = domElement.attribute("id");
traverseNode1(domElement,bufLevel);
}
}
}
domNode = domNode.nextSibling();
}
}
void irReleaseXML::traverseNode1(const QDomNode &node,QString bufLevel)
{
//присваиваем domNode первый элемент из XML файла
QDomNode domNode=node.firstChild();
while(!domNode.isNull())
{
QDomElement domElement = domNode.toElement();
if(domNode.isElement())
{
if(!domElement.isNull())
{
if(domElement.tagName() == "scene")
{
QString bufScene = domElement.attribute("id");
QString str = "XMLrelease/"+bufLevel+"/";
QDir a;
a.mkdir(str);
QDomDocument docXML;
docXML.appendChild(domElement);
QFile file;
file.setFileName(str+bufScene+".xml");
if(file.open(QIODevice::WriteOnly))
{
QTextStream(&file) << docXML.toString();
file.close();
}
}
}
}
domNode = domNode.nextSibling();
}
}
в результате создается xml файл, вот только он пустой...
В чем может быть проблема?
Заранее спасибо!
как я понял главная причина в том, что почему-то в документ docXML не добавляется элемент domElement (в фу-ции traverseNode1)
Если строчку
docXML.appendChild(domElement);
заменить на
QDomElement b=docXML.createElement("1");
docXML.appendChild(b);
b.appendChild(domElement);
то работает, но мне необходимо сделать domElement родительским элементом (верхним и единственным)
как это сделать??
Короче сделал так:
QDomElement b=docXML.createElement("");
b=domElement;
docXML.appendChild(b);
не знаю насколько это правильно, но работает...
Сообщение отредактировал epishev - 17.5.2011, 12:59