crossplatform.ru

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


  Ответ в Проход xml
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
Теги
Выровнять по центру
Ссылка на тему
Ссылка на сообщение
Скрытый текст
Сокращение
Код с подсветкой
Offtopic
 
Удалить форматирование
Спец. элементы
Шрифт
Размер
 
Цвет шрифта
 
Отменить ввод
Вернуть ввод
Полужирный
Курсив
Подчеркнутый
 
 
Смайлики
Вставить изображение
Вставить адрес электронной почты
Цитата
Код
Раскрывающийся текст
 
Увеличить отступ
По левому краю
По центру
По правому краю
Вставить список
Вставить список

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


Последние 10 сообщений [ в обратном порядке ]
epishev Дата 22.5.2011, 21:50
 
Цитата(Litkevich Yuriy @ 19.5.2011, 18:23) *
Цитата(epishev @ 19.5.2011, 17:46) *
смысл строчки в том, что я просто не знаю как взять элемент из одного QDomDocument и положить в другой......
Цитата
Можно вставить узлы из одного документа в другой с помощью функции importNode().
тыц

Как я читал!? .......
спасибо!
Litkevich Yuriy Дата 19.5.2011, 17:23
 
Цитата(epishev @ 19.5.2011, 17:46) *
смысл строчки в том, что я просто не знаю как взять элемент из одного QDomDocument и положить в другой......
Цитата
Можно вставить узлы из одного документа в другой с помощью функции importNode().
тыц
epishev Дата 19.5.2011, 14:46
 
Цитата(Litkevich Yuriy @ 19.5.2011, 15:04) *
Цитата(epishev @ 19.5.2011, 16:18) *
QDomElement b = docXML.createElement("");
b=child;
а в чём смысл первой строчки?


мне нужно было взять элемент из одного документа и положить в другой,

когда писал
docXML.appendChild(child);
//child - элемент из другово документа


файлы были пустыми.........

потом от безысходности решил попробовать так

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


то все "работало" как надо, только почему-то цикл на следующий круг уже не идет.

смысл строчки в том, что я просто не знаю как взять элемент из одного QDomDocument и положить в другой......
Litkevich Yuriy Дата 19.5.2011, 14:04
 
Цитата(epishev @ 19.5.2011, 16:18) *
QDomElement b = docXML.createElement("");
b=child;
а в чём смысл первой строчки?
epishev Дата 19.5.2011, 13:18
 
Цитата(FantasyOr @ 19.5.2011, 12:44) *
Цитата(epishev @ 19.5.2011, 10:00) *
docXML.createElement("");


а почему Вы уверены, что он должен быть не пустой?

к сожалению не приходилось писать в XML, только читать.



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


я это делаю для того, чтобы привязать элемент child к docXML (подругому незнаю как)
При таком варианте xml какрас не пустой... просто цикл проходит только один раз (создается только один xml, даже если в исходном файле элементов scene более 2х)

если же написать
QDomDocument docXML;
docXML.appendChild(child);


,то получаемый xml файл пустой...........





Короче устал я голову ломать....

сделал через ж..., на мой взгляд,.....

Прошел по всем объектам элемента scene и создал новый элемент из данных взятых в исходном xml

Всем спасибо!

PS если кто знает почему цикл проходит только один раз, то сменя спасибо! за разъяснения =)
FantasyOr Дата 19.5.2011, 11:44
 
QUOTE (epishev @ 19.5.2011, 10:00) *
docXML.createElement("");


а почему Вы уверены, что он должен быть не пустой?

к сожалению не приходилось писать в XML, только читать.
epishev Дата 19.5.2011, 9:00
 
Цитата(FantasyOr @ 18.5.2011, 11:21) *
у Вас должно получиттся:
...


Взял вашу ф-цию, только после
QDomDocument docXML;
QDomElement b = docXML.createElement("");


добавил
b=child;


всеравно, создает только один xml

////////////////////////////////////////////////////
изменил
QDomDocument docXML;
QDomElement b = docXML.createElement("");
b=child;
docXML.appendChild(b);


на

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


в результате создает все файлы, только они пустые, точнее в них по две пустые строки

Как мне засунуть каждый новый элемент child в новый файл?
FantasyOr Дата 18.5.2011, 10:21
  у Вас должно получиттся:
#define NodeName "scene"


irReleaseXML::traverseNode1(const QDomNode &node, QString bufLevel)
{
    QDomElement child = node.firstChildElement(NodeName);
    while (!child.isNull())
    {
        QString bufScene = child.attribute("id");
        QString str = "XMLrelease/"+bufLevel+"/";

        QDir a;
        a.mkdir(str);

        QDomDocument docXML;
        QDomElement b = docXML.createElement("");

        docXML.appendChild(b);

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

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

        child = child.nextSiblingElement(NodeName);
    }
}
epishev Дата 17.5.2011, 15:44
 
Цитата(FantasyOr @ 17.5.2011, 16:32) *
делаю вот так:
#define NodeName "NodeName"
...
...
QDomElement root = DomDocument.documentElement();

QDomElement child = root.firstChildElement(NodeName);
while (!child.isNull())
{
  // действия с child

        child = child.nextSiblingElement(NodeName);
}


тут я прохожу по всем нодам с определенным именем в Вашем случае "scene".


могу ошибаться, но
domNode = domNode.nextSibling();

нужно ставить не в if, а за ним, ибо тогда есть вероятность, что
if(domNode.isElement())

будет false и курсор не сдвинется на след нод => domNode не изменится.


переписал, ничего не изменилось... =( также проходит цикл только один раз.....

domNode = domNode.nextSibling();

у меня стоит после
if(domNode.isElement())
FantasyOr Дата 17.5.2011, 15:32
  делаю вот так:
#define NodeName "NodeName"
...
...
QDomElement root = DomDocument.documentElement();

QDomElement child = root.firstChildElement(NodeName);
while (!child.isNull())
{
  // действия с child

        child = child.nextSiblingElement(NodeName);
}


тут я прохожу по всем нодам с определенным именем в Вашем случае "scene".


могу ошибаться, но
domNode = domNode.nextSibling();

нужно ставить не в if, а за ним, ибо тогда есть вероятность, что
if(domNode.isElement())

будет false и курсор не сдвинется на след нод => domNode не изменится.
Просмотр темы полностью (откроется в новом окне)
RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 4.7.2025, 23:40