[Résolu] parser un fichier xml en ignorant le DTD

parser un fichier xml en ignorant le DTD [Résolu] - Java - Programmation

Marsh Posté le 06-06-2006 à 12:06:21    

Bonjour à tous.
 
Je suis en train d'essayer de parser un document xml seulement voilà : la DTD renseignée n'est pas présente. J'aimerais donc que le parser n'en tienne pas compte (parce que pour le moment, ça me fait une fatale error).
 
Voilà comment je parse le fichier :
           

Code :
  1. DocumentBuilderFactory docFactory = DocumentBuilderFactory
  2.                   .newInstance();
  3. DocumentBuilder docBuilder;
  4. docBuilder = docFactory.newDocumentBuilder();
  5. docBuilder.setErrorHandler((ErrorHandler) null);
  6. Document doc = docBuilder.parse(descr.getLocation().toOSString());


 
Quelqu'un saurait me dire comment faire ? J'ai regardé avec sax mais tout semble deprecated...
 
Merci d'avance !  :hello:


Message édité par Papy Brossard le 07-06-2006 à 15:37:50
Reply

Marsh Posté le 06-06-2006 à 12:06:21   

Reply

Marsh Posté le 06-06-2006 à 12:12:00    

API
 

Code :
  1. DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
  2. docFactory.setValidating(false);


 

Reply

Marsh Posté le 06-06-2006 à 12:49:41    

Humhum...  
Cela m'étonne car : 1/ j'ai essayé
                           2/ C'est le comportement par defaut.
 
Donc ça ne semble pas faire ce que je pensais. Ou alors je me trompe ?

Reply

Marsh Posté le 06-06-2006 à 13:13:04    

Il semble qu'il faille utilise un EntityResolver
 
Tu fais le tiens, qui dit que pour ton DTD, faut pas essayer de le lire...
 
Source :
http://servlets.com/archive/servle [...] m-interest
http://www.jdom.org/pipermail/jdom [...] 06891.html
 
Attention, j'ai juste lu, ca ne veut pas dire que ca marche


---------------
my flick r - Just Tab it !
Reply

Marsh Posté le 06-06-2006 à 13:19:51    

Je vais deja regarder ça, merci.

Reply

Marsh Posté le 07-06-2006 à 15:34:46    

J'ai trouvé yune solution. Je la mets ici pour info, ça peut servir à d'autres.

Code :
  1. DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
  2.          DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
  3.          docBuilder.setErrorHandler((ErrorHandler) null);
  4.          docBuilder.setEntityResolver(new NoDTDEntityResolver());
  5. ....
  6. private class NoDTDEntityResolver implements EntityResolver
  7.    {
  8.       public InputSource resolveEntity(String publicID, String systemID)
  9.       {
  10.          if (systemID.equals("perso.dtd" ))
  11.          {
  12.             return new InputSource(new StringReader("" ));
  13.          }
  14.          return null;
  15.       }
  16.    }


Message édité par Papy Brossard le 07-06-2006 à 15:37:28
Reply

Sujets relatifs:

Leave a Replay

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