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

  FORUM HardWare.fr
  Programmation
  C++

  Xerces 1.6 et utilisation d'une DTD

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Xerces 1.6 et utilisation d'une DTD

n°604578
kadreg
profil: Utilisateur
Posté le 07-01-2004 à 11:29:15  profilanswer
 

Bonjour,
 
j'utilise xerces 1.6 (for C++) pour parser des fichiers C++. Malheureusement, sur les machines n'ayant pas accès au net, j'ai un problème avec les fichier XML contenant un DOCTYPE externe comme celui-ci, un fichier de configuration struts :  
 

<?xml version="1.0" encoding="ISO-8859-1" ?>
 
<!DOCTYPE struts-config PUBLIC
     "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN"
     "http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd">
 
<!--
   This is the Struts configuration file for the "Hello!" sample application
-->
 
<struts-config>
 
  <!-- ======== Form Bean Definitions =================================== -->
  <form-beans>
    <form-bean name="HelloForm" type="ch03.hello.HelloForm"/>
  </form-beans>
 
 <!-- ========== Action Mapping Definitions ============================== -->
 <action-mappings>
  <!-- Say Hello! -->
  <action  path   = "/HelloWorld"
        type   = "ch03.hello.HelloAction"
        name   = "HelloForm"
        scope   = "request"
        validate = "true"
        input   = "/hello.jsp"
   >
    <forward name="SayHello" path="/hello.jsp" />
  </action>
 </action-mappings>
 
 <!-- ========== Message Resources Definitions =========================== -->
 
 <message-resources parameter="ch03.hello.Application"/>
 
</struts-config>


 
Lorsque je parse le fichier avec un DOMParser, je désactive la validation, mais il va quand même tenter de télécharger le fichier DTD, et s'il ne le trouve pas, quitte en fatal error.
 
Voici mon code :  
 

Code :
  1. #include <iostream.h>
  2. #include "util/PlatformUtils.hpp"
  3. #include "parsers/DOMParser.hpp"
  4. #include "sax/HandlerBase.hpp"
  5. class MyErrorHandler : public ErrorHandler {
  6. char tampon [1024];
  7. public:
  8. virtual void  warning (const SAXParseException &exception) {
  9.  XMLString::transcode (exception.getMessage(), tampon, 1024);
  10.  cout<<"warning : "<<tampon<<endl;
  11. }
  12. virtual void  error (const SAXParseException &exception){
  13.  XMLString::transcode (exception.getMessage(), tampon, 1024);
  14.  cout<<"error : "<<tampon<<endl;
  15. }
  16. virtual void  fatalError (const SAXParseException &exception){
  17.  XMLString::transcode (exception.getMessage(), tampon, 1024);
  18.  cout<<"fatalError : "<<tampon<<endl;
  19. }
  20. virtual void  resetErrors (){
  21. }
  22. const char *getError(){
  23.  return NULL;
  24. }
  25. };
  26. void main (int argc, char **argv){
  27. XMLPlatformUtils::Initialize();
  28. DOMParser* parser = new DOMParser();
  29. MyErrorHandler *errorHandler = new MyErrorHandler ();
  30. parser->setDoNamespaces(false);
  31.     parser->setExitOnFirstFatalError(false);
  32. parser->setValidationConstraintFatal(true);
  33. parser->setIncludeIgnorableWhitespace(true);
  34.     parser->setValidationScheme(DOMParser::Val_Never);
  35.     parser->setDoSchema(false);
  36. parser->setErrorHandler (errorHandler);
  37. parser->parse ("c:\\struts-config.xml" );
  38. if (parser->getErrorCount () > 0) {
  39.  cout<<"parse failed "<<endl;
  40. }
  41. }


 
Et voici l'erreur obtenue :  

fatalError : An exception occured! Type:NetAccessorException, Message:The host/address '(0}' could not be resolved


 
Comment faire pour que, si je désactive la validation, il ne s'amuse pas à aller télécharger le fichier quand même ?


Message édité par kadreg le 07-01-2004 à 11:31:30

---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
mood
Publicité
Posté le 07-01-2004 à 11:29:15  profilanswer
 

n°604596
Taiche
(╯°□°)╯︵ ┻━┻
Posté le 07-01-2004 à 11:38:19  profilanswer
 

Bin pourquoi tu spécifies setValidationConstraintFatal(true) ? :??: A priori, stu veux pas de validation, autant foutre la constraint en non fatale, non ? :??:


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
n°604598
kadreg
profil: Utilisateur
Posté le 07-01-2004 à 11:40:13  profilanswer
 

Ca change rien [:spamafote]


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
n°604600
chrisbk
-
Posté le 07-01-2004 à 11:40:57  profilanswer
 

pas une raison pour tenter le diable :D

n°604604
Taiche
(╯°□°)╯︵ ┻━┻
Posté le 07-01-2004 à 11:42:27  profilanswer
 

Ah ba c'est bizarre passke la doc dit :

Citation :


If set to true, and the the parser will treat validation error as fatal and will exit depends on the state of "getExitOnFirstFatalError". If false, then it will report the error and continue processing.


Donc comme t'as foutu setExitOnFirstFatalError(false), normalement il devrait te cracher l'erreur mais tout en continuant à parser le fichier :/


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
n°604608
Taiche
(╯°□°)╯︵ ┻━┻
Posté le 07-01-2004 à 11:44:05  profilanswer
 

Ah, attends, j'viens de tomber sur un truc :

Citation :


 void AbstractDOMParser::setLoadExternalDTD   (    const bool      newState   )    
   
 
Set the 'Loading External DTD' flag.
 
This method allows users to enable or disable the loading of external DTD. When set to false, the parser will ignore any external DTD completely if the validationScheme is set to Val_Never.
 
The parser's default state is: true.


[:meganne]
C'est dispo en 1.6 ? Passke la doc que j'lis c'est celle de la 2.kek chose :o Si ui, y a p'têt une soluce de ce côté :o


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
n°604614
kadreg
profil: Utilisateur
Posté le 07-01-2004 à 11:48:00  profilanswer
 

Taiche a écrit :


C'est dispo en 1.6 ?  


 
non [:sisicaivrai]
 


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
n°604619
Taiche
(╯°□°)╯︵ ┻━┻
Posté le 07-01-2004 à 11:50:44  profilanswer
 

Ah :D P'têt un problème corrigé dans une version suivante ? T'as pas moyen de passer à une version qui a ça ?


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
n°604635
kadreg
profil: Utilisateur
Posté le 07-01-2004 à 12:01:01  profilanswer
 

Taiche a écrit :


 T'as pas moyen de passer à une version qui a ça ?


 
Non. (j'ai déjà demandé)


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
n°604641
kadreg
profil: Utilisateur
Posté le 07-01-2004 à 12:03:25  profilanswer
 

Mouais. Si après le parse je demande le nom de la racine, il core...


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
mood
Publicité
Posté le 07-01-2004 à 12:03:25  profilanswer
 

n°604804
kadreg
profil: Utilisateur
Posté le 07-01-2004 à 15:12:18  profilanswer
 

[:youpi] j'ai trouver.  
 
Je crée mon propre entityResolver que je met à la place de celui par défaut si il y a pas de validation. Lorsqu'il demande une DTD, je lui refile un Entity correspondant à un fichier vide.
 
Et merci à tous de votre aide [:ohello]


Message édité par kadreg le 07-01-2004 à 15:12:40

---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
n°604808
Taiche
(╯°□°)╯︵ ┻━┻
Posté le 07-01-2004 à 15:16:59  profilanswer
 

Fallait en vouloir, quand même :D
M'enfin si un jour tu peux passer sur du Xerces 2... :whistle:


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
n°604898
the real m​oins moins
Posté le 07-01-2004 à 16:57:55  profilanswer
 

kadreg a écrit :

[:youpi] j'ai trouver.  
 
Je crée mon propre entityResolver que je met à la place de celui par défaut si il y a pas de validation.

merde j'arrive trop tard. je savais. :(


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°604899
Taiche
(╯°□°)╯︵ ┻━┻
Posté le 07-01-2004 à 16:59:53  profilanswer
 

the real moins moins a écrit :

merde j'arrive trop tard. je savais. :(


Si tu t'levais avant 14h, aussi [:kiki]


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
n°604900
kadreg
profil: Utilisateur
Posté le 07-01-2004 à 17:00:18  profilanswer
 

the real moins moins a écrit :

merde j'arrive trop tard. je savais. :(


 
Je suis en train de le commiter [:oyaisse2]


Message édité par kadreg le 07-01-2004 à 17:00:28

---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
n°604905
the real m​oins moins
Posté le 07-01-2004 à 17:07:23  profilanswer
 

Taiche a écrit :


Si tu t'levais avant 14h, aussi [:kiki]

16h :(


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°604915
Taiche
(╯°□°)╯︵ ┻━┻
Posté le 07-01-2004 à 17:11:20  profilanswer
 

[:mlc]
Ah mais t'es encore en vacances :D Bin euh... c'est mal, kes tu veux qu'on te dise :o Tu restes éveillé jusqu'à des heures pas croyables, aussi :o


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
n°604968
kadreg
profil: Utilisateur
Posté le 07-01-2004 à 18:09:46  profilanswer
 

Au fait, es-ce qu'on peut utiliser un proxy HTTP avec xerces 1.6 ?


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
n°604992
the real m​oins moins
Posté le 07-01-2004 à 18:31:54  profilanswer
 

avec java, pas de problème, ça passe surementpar la propriété systeme :D , maintenant en c++....


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°605454
gilou
Modérateur
Modzilla
Posté le 08-01-2004 à 11:27:22  profilanswer
 

Au fait, kadreg, vu les besoins que tu as, expat serait probablement mieux adapte a tes besoins (si tu n'as pas de pages encodees en autre chose que de l'ascii, de l'isolatin 1 ou de l'UTF 8/16). Et c'est beaucoup plus petit que xerces.
 
A+,


Message édité par gilou le 08-01-2004 à 11:29:45

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --

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

  Xerces 1.6 et utilisation d'une DTD

 

Sujets relatifs
utilisation des regex[postgresql] trigger sur l'heure systeme ? edit : utilisation crontab
[PHP] faire défile du texte en PHP ou via utilisation JS,[OpenGL] Utilisation des NURBS
utilisation de string hard !![HTML] Utilisation des balises CODE, SAMP, VAR et TT
utilisation de mediumblob from mysql avec le langage php ...Utilisation d'une base de données Access ?
JNI : Utilisation objet C++commande dos pour supprimer fichier en utilisation
Plus de sujets relatifs à : Xerces 1.6 et utilisation d'une DTD


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