crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Элемент из одного xml записать в другой
epishev
  опции профиля:
сообщение 17.5.2011, 13:31
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 89
Регистрация: 23.3.2011
Пользователь №: 2533

Спасибо сказали: 0 раз(а)




Репутация:   0  


Всем приве!

Задача такая: нужно взять элемент из одного файла и записань в другой.

//запускаем проход 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
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 25.10.2020, 1:53