Xerces 1.6 et utilisation d'une DTD

Xerces 1.6 et utilisation d'une DTD - C++ - Programmation

Marsh Posté le 07-01-2004 à 11:29:15    

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 !
Reply

Marsh Posté le 07-01-2004 à 11:29:15   

Reply

Marsh Posté le 07-01-2004 à 11:38:19    

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.
Reply

Marsh Posté le 07-01-2004 à 11:40:13    

Ca change rien [:spamafote]


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
Reply

Marsh Posté le 07-01-2004 à 11:40:57    

pas une raison pour tenter le diable :D

Reply

Marsh Posté le 07-01-2004 à 11:42:27    

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.
Reply

Marsh Posté le 07-01-2004 à 11:44:05    

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.
Reply

Marsh Posté le 07-01-2004 à 11:48:00    

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 !
Reply

Marsh Posté le 07-01-2004 à 11:50:44    

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.
Reply

Marsh Posté le 07-01-2004 à 12:01:01    

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 !
Reply

Marsh Posté le 07-01-2004 à 12:03:25    

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 !
Reply

Marsh Posté le 07-01-2004 à 12:03:25   

Reply

Marsh Posté le 07-01-2004 à 15:12:18    

[: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 !
Reply

Marsh Posté le 07-01-2004 à 15:16:59    

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.
Reply

Marsh Posté le 07-01-2004 à 16:57:55    

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 ?
Reply

Marsh Posté le 07-01-2004 à 16:59:53    

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.
Reply

Marsh Posté le 07-01-2004 à 17:00:18    

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 !
Reply

Marsh Posté le 07-01-2004 à 17:07:23    

Taiche a écrit :


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

16h :(


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 07-01-2004 à 17:11:20    

[: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.
Reply

Marsh Posté le 07-01-2004 à 18:09:46    

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 !
Reply

Marsh Posté le 07-01-2004 à 18:31:54    

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 ?
Reply

Marsh Posté le 08-01-2004 à 11:27:22    

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é!  --
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed