Parser un fichier xml à l'aide de c++ & Qt
J'essaye de parser un fichier XML, avec la structure suivante:
<I>
<C c="test1">
<H><Pd pd="123"/>
<f p="789" r="456"/>
</H>
<M m="test2">
<H><Pd pd="3456"/><R r="678"/>
</H>
</M>
</C>
<T t="0">
<T2>123</T2>
<T3>2345</T3>
</T>
<T t="1">
<T1>23456</T1>
<T2>23</T2>
<T3>123</T3>
<T4>456</T4>
</T>
</I>
J'ai une Liste de nombres par exemple 0 et 1, et un modèle de recherche par exemple, '23'
Maintenant je recherche le fichier XML pour tous les T-nœuds avec t="un certain nombre de ma liste" où l'un des nœuds enfants(T1, T2,T3) contient le modèle de recherche.
Quelqu'un peut-il m'aider à obtenir commencé avec ce problème? Je veux utiliser l'intervalle Qt fonctions, mais ne sais pas vraiment comment commencer.
Je suis heureux de tous les conseil!
- Essayez de construire un arbre au premier abord, de manière récursive. Ensuite, la recherche de l'arbre de requête. Il serait mieux si vous pouvez fournir exacte de la structure du fichier XML.
- Assurez-vous d'abord que votre XML suit un schéma spécifique, alors jetez un oeil à XQuery.
- Taufique Hussaiun Le XML de la structure est comme je l'ai collé sauf qu'elles sont beaucoup plus <T> et <C> nœuds. En plus de cela c'est la structure exacte.
- Le XML suit un spécifique shema(I->T->T1). et merci je vais voir ce que XQuery peut le faire pour moi 🙂
- Prendre un coup d'oeil sur QXmlStreamReader - doc.qt.digia.com/qt/qxmlstreamreader.html
Vous devez vous connecter pour publier un commentaire.
Pas testé, mais c'est une façon, j'ai déjà utilisé Qt à analyser dans un très simple fichier XML. Peut-être cela peut vous donner une idée de comment l'utiliser ici:
Pour XML choses, il a été suggéré d'utiliser QXmlStreamReader et QXmlStreamWriter de QtCore module, juste parce que le QDom et QSax les choses n'ont pas été activement maintenu pendant un certain temps.
http://doc.qt.digia.com/4.7/qxmlstreamreader.html
http://doc.qt.digia.com/4.7/qxmlstreamwriter.html
Je ne vais pas copier&collez l'exemple de code à partir de qt docs ici. J'espère que vous pourrait bien les comprendre. Et vous avez également pu vérifier exemples/répertoire xml de qt 4.x.
vous pouvez utiliser QXmlQuery. Il agir comme XQuery (je suppose que la syntaxe est la même). Et vous pourriez analyser votre fichier xml avec le gros avantage de XQuery est la flexibilité.
Vous pouvez commencer avec un code comme ceci:
setQuery méthode vous permettent de définir votre modèle de recherche. Il peut être basé sur l'id de l'élément, attribut, et ainsi de suite...comme avec XQuery. C'est QXmlQuery page de doc:
lien