Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1023 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  [C++]XML/QT/QDom - lecture d'un DTD et d'un XML

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C++]XML/QT/QDom - lecture d'un DTD et d'un XML

n°1010066
Gurumedita​tion
Dépoussiérant
Posté le 11-03-2005 à 17:09:54  profilanswer
 

Salut a tous !
 
Apres une recherche qui n'a pas répondu a mes attentes, je pose la question :
 
j'utilise QT 3.2.1 (et je ne peux pas en utiliser d'autre).
 
J'ai un fichier contenant un DTD, et un autre contenant un fichier XML .
 
J'aimerai vérifier le fichier XML par le DTD en premier, et ensuite lire les valeurs des nodes de mon fichier XML. Pour l'instant j'arrive a parcourir les nodes et avoir leur nom, mais rien de plus (en utilisant QDomNode.tagName() ):/
Qt assistant n'arrive pas a me sortir la tete de l'eau non plus, pas plus que les bouquins sur QT que j'ai .
 
Si quelqu'un peut me filer un coup de main ca sera pas de refus.
Mes fichiers XML et DTD :
 

le XML :
 
 
<FILTRECOMBINE nom= "seuillage rouge puis binaire" nbfiltres= "2">
 <DESCRIPTIONGLOBALE>
  "Ce filtre produit un seuillage sur le rouge et transforme ensuite l'image en binaire"
 </DESCRIPTIONGLOBALE>
 <FILTRE nom= "seuillageRVB" nbparam= "6" >
  <DESCRIPTION>
   "filtre de seuillage selon les couleurs RVB"
  </DESCRIPTION>
  <ACCES type= "dll" >
    "./seuillageRVB.dll"
  </ACCES>
  <PARAM type_visuel= "regle" nom= "Rmin" min="0" max="255" valeur="10" type_donnee="short unsigned int">
   "rouge min"
  </PARAM>
  <PARAM type_visuel= "regle" nom="Rmax" min="0" max="255" valeur="60" type_donnee="short unsigned int">
   "rouge max"
  </PARAM>
  <PARAM type_visuel="regle" nom="Vmin" min="0" max="255" valeur= "0" type_donnee="short unsigned int">
    "vert min"
  </PARAM>
  <PARAM type_visuel= "regle" nom= "Vmax" min="0" max="255" valeur="0" type_donnee="short unsigned int">
   "vert max"
  </PARAM>
    <PARAM type_visuel="checkbox" nom="Bmin" min="0" max="255" valeur="0" type_donnee="short unsigned int">
   "bleu min"
  </PARAM>
  <PARAM type_visuel="regle" nom="Bmax" min="0" max= "255" valeur="0" type_donnee="short unsigned int">
   "bleu max"
  </PARAM>
 </FILTRE>
 
 <FILTRE  nom= "binaire" nbparam="2">
 <DESCRIPTION>
  "Ce filtre transforme une image en binaire: toutes les valeurs de couleur comprises dans la fenetre sont passees a 1, les autres a 0"
 </DESCRIPTION>
 <ACCES type= "dll" >
   "./binaire.dll"
 </ACCES>
 <PARAM type_visuel= "regle" nom="Smin" min="0" max="255" valeur="0" type_donnee="short unsigned int" >
  "Seuil mini"
 </PARAM>
 <PARAM type_visuel="regle" nom="Smax" min="0" max="255" valeur= "60" type_donnee="short unsigned int">
  "Seuil maxi"
 </PARAM>
 </FILTRE>
</FILTRECOMBINE>


le DTD :  
<?xml version="1.0"?>
 
<!DOCTYPE DEFINITIONFILTRE [
<!ELEMENT filtrecombine (descriptionglobale?,(filtre,filtrecombine)+)>
<!ELEMENT descriptionglobale (#PCDATA)>
 
<!ATTLIST filtresauve nom CDATA #REQUIRED >
<!ATTLIST filtresauve nbfiltres CDATA #REQUIRED >
 
<!ELEMENT filtre (description?,acces,param*)>
<!ELEMENT description (#PCDATA)>
<!ATTLIST filtre nom CDATA #REQUIRED>
<!ATTLIST filtre nbparam CDATA #REQUIRED>
 
<!ELEMENT acces (#PCDATA)>
<!ATTLIST acces type (dll|so|exe) #REQUIRED>
 
<!ELEMENT param (#PCDATA)>
<!ATTLIST param type_visuel (regle|radio|checkbox|editbox|pmbox) #REQUIRED>
<!ATTLIST param nom CDATA #REQUIRED>
<!ATTLIST param min CDATA #REQUIRED>
<!ATTLIST param max CDATA #REQUIRED>
<!ATTLIST param valeur CDATA #REQUIRED>
<!ATTLIST param type_donnee CDATA #required>
]>


 
merci d'avance!  

mood
Publicité
Posté le 11-03-2005 à 17:09:54  profilanswer
 

n°1014948
djbed1
bubu
Posté le 16-03-2005 à 17:36:38  profilanswer
 

bu ! :bounce:


Message édité par djbed1 le 16-03-2005 à 17:36:53
n°1014997
IrmatDen
Posté le 16-03-2005 à 18:20:40  profilanswer
 

salut
 

Citation :

J'aimerai vérifier le fichier XML par le DTD en premier


Je ne sais pas si c'est possible avec Qt.
Cependant tu as QXmlDTDHandler (présent dans la 3.2.3) qui vérifie tes éléments au fur et à mesure et qui s'arrête si tu déclare une erreur. Je ne l'ai jamais utiliser et je n'ai donc aucun conseil à te donner pour le coder, mais regarde les paramètres que tu as en entrée de chaque fonction à l'exécution et tu sauras quoi en faire peut-être. Sinon si tu trouves une façon de faire, je suis aussi intéressé par la réponse.
Tu as deux sites sur Qt qui seront sans doute plus à même de te répondre :
qtforum.org et prog.qt.free.fr

n°1015608
Gurumedita​tion
Dépoussiérant
Posté le 17-03-2005 à 09:54:56  profilanswer
 

on te remercie irmatden (et mout de raisin aussi ;) )
 
effectivement, dans la doc de QT il est marqué que le parser est "non validating", c'est a dire qu'il ne teste pas la validité du document XML. C'est pas grave, on laisse tomber le DTD, y'a plus de temps. en tout cas merci pour les liens, ca peut toujours nous aider si on a un autre probleme.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  [C++]XML/QT/QDom - lecture d'un DTD et d'un XML

 

Sujets relatifs
transformer une DTD en XMLLecture fichier XML
[XML][XSL] Filtrage et trie dynamiqueLecture d'un fichier et copie dans un buffer, ultra lent ! [Resolu]
Récuperation de variables d'un XML et affichage de ces derniers[php/XML/regex] parsing bbcode aleatoire
[DOM/XML/PHP] & dans texte = erreur de parsing[java][Resolu] Probleme lecture de fichier
Plus de sujets relatifs à : [C++]XML/QT/QDom - lecture d'un DTD et d'un XML


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR