Etant donné que je souhaite uniquement afficher les parents d'un dom document, comment pourrais je faire pour filtrer le fichier xml qui le charge dans QTreeView?
Etant donné que je souhaite uniquement afficher les parents d'un dom document, comment pourrais je faire pour filtrer le fichier xml qui le charge dans QTreeView?
tu entends quoi par les parents?
Du genre:
Tu veux garder quoi sur cet exemple?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 <node> <sousNode1> <sousNode2> <sousSousNode2> </sousSousNode2> </sousNode2> </sousNode1> <node>
Deuxième question:
tu utilise quelle méthode pour le XML? DOM ou QXmlStreamReader?
Tu récupère les elements "element" de ton XML.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 QDomElement root = doc.documentElement(); QDomNode e = root.firstChild(); while(!e.isNull()) { QDomElement element= e.toElement(); e = e.nextSibling(); }
Pour chaque niveau tu rajoute un firstChild() et tu descends dans l'arborescence.
Ceci est valable pour mon code ci dessus?Et comment pourrais je le modifier?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 model = new DomModel(QDomDocument(), this); view = new QTreeView(this); QFile file(":/default.xml"); if (file.open(QIODevice::ReadOnly )) { QDomDocument document; if (document.setContent(&file)) { DomModel *newModel = new DomModel(document, this); view->setModel(newModel); // set context menu policy view->setContextMenuPolicy(Qt::CustomContextMenu); connect(view, SIGNAL(customContextMenuRequested(const QPoint&)),this, SLOT(ShowTreeContextMenu(const QPoint&))); } file.close(); ui.horizontalLayout_2->addWidget(view); setLayout(ui.horizontalLayout_2); }
Juste après
"if (document.setContent(&file))"
Tu rajoutes:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 file->close(); //tu n'a plus besoin du fichier en DOM QDomElement root = doc.documentElement(); QDomNode e = root.firstChild(); while(!e.isNull()) { QDomElement element = e.toElement(); //tu rajoutes comme tu veux les element au modele, genre // tu récupère le tagName() que tu mets dans la QtreeView. e = e.nextSibling(); }
Partager