Alles rund um die Programmierung mit Qt
patrik08
Beiträge: 746 Registriert: 27. Februar 2006 10:48
Wohnort: DE Freiburg
Beitrag
von patrik08 » 24. Juni 2006 18:52
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
patrik08
Beiträge: 746 Registriert: 27. Februar 2006 10:48
Wohnort: DE Freiburg
Beitrag
von patrik08 » 24. Juni 2006 19:57
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;
};
patrik08
Beiträge: 746 Registriert: 27. Februar 2006 10:48
Wohnort: DE Freiburg
Beitrag
von patrik08 » 25. Juni 2006 01:43
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