Russian Qt Forum
Ноябрь 22, 2024, 22:11 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Создание корневого узла.  (Прочитано 4332 раз)
varkon
Гость
« : Август 11, 2010, 17:41 »

Подскажите как правильно создать сабж. Сейчас делаю это используя слудующий код:
Код:
QDomProcessingInstruction pri =  domDocument.createProcessingInstruction("xml", "version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"");

     domDocument.appendChild(pri);
     pri = domDocument.createProcessingInstruction("mso-application", "progid=\"Word.Document\"");
     domDocument.appendChild(pri);
     QString dom = "w:wordDocument xmlns:aml=\"http://schemas.microsoft.com/aml/2001/core\" xmlns:number=\"urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0\" xmlns:dt=\"uuid:C2F41010-65B3-11d1-A29F-00AA00C14882\" xmlns:v=\"urn:schemas-microsoft-com:vml\" xmlns:fo=\"urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0\" xmlns:w10=\"urn:schemas-microsoft-com:office:word\" xmlns:w=\"http://schemas.microsoft.com/office/word/2003/wordml\" xmlns:wx=\"http://schemas.microsoft.com/office/word/2003/auxHint\" xmlns:o=\"urn:schemas-microsoft-com:office:office\" xml:space=\"preserve\" w:embeddedObjPresent=\"no\"";
     QDomElement elem = domDocument.createElement(dom);
     domDocument.appendChild(elem);
корневым узлом соотвественно должен быть этот w:wordDocument
Но в результате формируется такой файл:
Код:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>?>
<?mso-application progid="Word.Document"?>
<w:wordDocument xmlns:aml="http://schemas.microsoft.com/aml/2001/core" xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:w10="urn:schemas-microsoft-com:office:word" xmlns:w="http://schemas.microsoft.com/office/word/2003/wordml" xmlns:wx="http://schemas.microsoft.com/office/word/2003/auxHint" xmlns:o="urn:schemas-microsoft-com:office:office" xml:space="preserve" w:embeddedObjPresent="no"/>
<o:DocumentProperties>
...
а должно быть:
Код:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>?>
<?mso-application progid="Word.Document"?>
<w:wordDocument xmlns:aml="http://schemas.microsoft.com/aml/2001/core" xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:w10="urn:schemas-microsoft-com:office:word" xmlns:w="http://schemas.microsoft.com/office/word/2003/wordml" xmlns:wx="http://schemas.microsoft.com/office/word/2003/auxHint" xmlns:o="urn:schemas-microsoft-com:office:office" xml:space="preserve" w:embeddedObjPresent="no">
<o:DocumentProperties>
...
</w:wordDocument>
добавление дочерних узлов происходит в цикле следующим образом:
Код:
  QFile out(fileout);
    out.open(QIODevice::ReadOnly);
   domRead.setContent(&out);
   QDomElement root = domRead.documentElement();

QDomElement child = root.firstChildElement("o:DocumentProperties");
   while(!child.isNull()){
       domDocument.appendChild(child);
       child = child.nextSiblingElement();//child.nextSiblingElement();
   }
смысл кода - последовательно считать произвольное количество xml-файлов и записать информацию из них в один.
Спасибо за внимание.
Записан
deaks
Гость
« Ответ #1 : Сентябрь 23, 2010, 17:58 »

не в том месте сделали append

надо так:

QDomDocument doc;
QDomElement root = doc.createElement("Test");

/*

Добавление дочерних элементов через root.appendChild()

*/

doc.appendChild(root);
« Последнее редактирование: Сентябрь 23, 2010, 18:03 от deaks » Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.048 секунд. Запросов: 21.