crossplatform.ru

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


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

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

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


Последние 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 Текстовая версия Сейчас: 24.5.2024, 19:20