crossplatform.ru

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

> Проход xml
epishev
  опции профиля:
сообщение 17.5.2011, 15:04
Сообщение #1


Студент
*

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

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




Репутация:   0  


Всем привет!
Теперь другая проблемма:

Я прохожу xml файл, ищу теги с именем scene, если нахожу, то создаю файл с именем атрибута("id") тега.
Не могу понять почему цикл
while(!domNode.isNull())
{
...
}

из ф-ции ниже, выполняется только один раз (создается только один xml) хотя элементов с именем scene более одного.

Если изменить тело условия
if(domElement.tagName() == "scene")
{...}

на
if(domElement.tagName() == "scene")
                {
                    QString bufScene = domElement.attribute("id");

                    QString str = "XMLrelease/"+bufLevel+"/";
                    QDir a;
                    a.mkdir(str);

                    //QDomDocument docXML;
                    //QDomElement b=docXML.createElement("");
                    //b=domElement;
                    //docXML.appendChild(b);

                    QFile file;

                    file.setFileName(str+bufScene+".xml");

                    if(file.open(QIODevice::WriteOnly))
                    {
                        //QTextStream(&file) << docXML.toString();
                        file.close();
                    }


...., то создаются все xml файлы (столько же, сколько элементов с именем scene), но они, естественно пустые.
Как решить эту проблему? Что я делаю не так?

код ф-ции:
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;

                    QDomElement b=docXML.createElement("");

                    b=domElement;
                    docXML.appendChild(b);

                    QFile file;

                    file.setFileName(str+bufScene+".xml");

                    if(file.open(QIODevice::WriteOnly))
                    {
                        QTextStream(&file) << docXML.toString();
                        file.close();
                    }
                }
            }
        }
        domNode = domNode.nextSibling();
    }
}
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
Litkevich Yuriy
  опции профиля:
сообщение 19.5.2011, 17:23
Сообщение #2


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

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




Репутация:   94  


Цитата(epishev @ 19.5.2011, 17:46) *
смысл строчки в том, что я просто не знаю как взять элемент из одного QDomDocument и положить в другой......
Цитата
Можно вставить узлы из одного документа в другой с помощью функции importNode().
тыц
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


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


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




RSS Текстовая версия Сейчас: 24.11.2024, 11:33