Seite 1 von 1

QT4 XML QDomDocumentFragment isDocumentFragment() = false

Verfasst: 24. Juni 2006 18:52
von patrik08
Warum kann die classe QDomDocumentFragment keine node machen!
entweder ist es eine Dom node oder ist es luft... (scheinbar)

mit Qtextstream kann mann auch keine fragmente machen...

Es kann doch so schoen sein verschiedene dokumente verbinden .. um alles auf einmal zu lesen mit xslt oder was auch immer....

Code: Alles auswählen


#include <QtDebug>
#include <QDebug> 
#include <QObject>
#include <QSettings>
#include <QErrorMessage>
#include <QProcess>
#include <QDomDocument>
#include <QDomElement>
#include <QStringList>
#include <QDir>
#include <QDomDocumentFragment>
#include <QDomImplementation>
#include <QMessageBox>

int main(int argc, char *argv[]) {
    
    QDomDocument dom_external; 
    QString filexmleternal = "./qtpage.xml";
    bool is_fi = false;
    
    QFile xmlfile(filexmleternal);
    if(!xmlfile.open( QIODevice::ReadOnly ) ) {
     /* stay false ! */
    }
    if (dom_external.setContent(&xmlfile)) { 
    is_fi = true;
    }
    if (!is_fi) {
      qDebug() << "External file not loadet!";   
    } else {
      qDebug() << "External file is super!! loadet!";  
      QDomDocumentFragment frag;
      frag.appendChild(dom_external);
       if (!frag.isDocumentFragment()) {
        qDebug() << "Is not a fragment !!!"; 
       }           
    }
   QDomDocument doc;
   QDomProcessingInstruction header = doc.createProcessingInstruction( "xml", "version=\"1.0\"" );
   doc.appendChild( header );
   QDomElement root = doc.createElement( "root" );
   doc.appendChild( root );
    QDomElement big = doc.createElement( "big" );
    if (is_fi) {
    //////big.appendChild(frag);   /* not insert */
    }
    root.appendChild( big );
    /////QDomNode::isDocumentFragment ()
   qDebug() << doc.toString();
   return 0;
};


die pro

Code: Alles auswählen

TEMPLATE = app console
TARGET += 
DEPENDPATH += .
INCLUDEPATH += .

win32:debug { CONFIG = console } 
CONFIG  += qt warn_on release

QT += network
QT += xml

# Input
SOURCES += main.cpp

Verfasst: 24. Juni 2006 19:57
von patrik08
Also die class QDomDocumentFragment is nicht zu gebrauchen...

so gehts einen neuen QDomDocument xml in einen anderen zu verschachteln .... nur externes xml file ... vielleicht hat jemand einen idee wie man richtige fragment hinzufuegt.....

Code: Alles auswählen

int main(int argc, char *argv[]) {
    
    QDomDocument dom_external; 
    QString filexmleternal = "./qtpage.xml";
    bool is_fi = false;
    
    QFile xmlfile(filexmleternal);
    if(!xmlfile.open( QIODevice::ReadOnly ) ) {
     /* stay false ! */
    }
    is_fi = dom_external.setContent(&xmlfile);  
    QDomElement root_extern = dom_external.documentElement(); 
    QDomNode externxml = root_extern.firstChild();
    QDomNode externxml_2 = dom_external.importNode(externxml,true);
    QDomElement extase = externxml_2.toElement(); 
    
    if (!is_fi) {
      qDebug() << "External file not loadet!";   
    } else {
      qDebug() << "External file is super!! loadet!";           
    }
    
   QDomDocument doc;
   QDomProcessingInstruction header = doc.createProcessingInstruction( "xml", "version=\"1.0\"" );
   doc.appendChild( header );
   QDomElement root = doc.createElement( "root" );
   doc.appendChild( root );
   QDomElement big = doc.createElement( "big" );
   big.appendChild(extase);  /* the external file not from fragment */
   root.appendChild( big );
    
    
   
   qDebug() << doc.toString();
   return 0;
};

Verfasst: 25. Juni 2006 01:43
von patrik08
Da ich sehr wuetend wahr dass die class QDomDocumentFragment ein flop ist .... habe ich die QDomDocument class erweitert ... um fragmente von tag hineinzusetzen ... oder ganze xml file zusammen zu setzen.... um sie nur einmal zu lesen....

Sogar die PDF kreation mit xsl-fo ist auch fuer meinen projekt einfacher .... http://sourceforge.net/projects/qtexcel-xslt/

zum nachlesen bei Tipps und Tricks und fuer schreib-faule ist die classe name kuerzer "Qxml"

http://qtforum.de/forum/viewtopic.php?p=12069#12069