Подскажите как правильно создать сабж. Сейчас делаю это используя слудующий код:
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-файлов и записать информацию из них в один.
Спасибо за внимание.