crossplatform.ru

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


  Ответ в Элемент из одного xml записать в другой
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
epishev Дата 17.5.2011, 13:31
  Всем приве!

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

//запускаем проход 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);


не знаю насколько это правильно, но работает... :)
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 20.4.2024, 13:34