[XML]probleme de parseur avec la DTD

probleme de parseur avec la DTD [XML] - Java - Programmation

Marsh Posté le 16-08-2005 à 16:01:27    

Bonjour,
je débute dans les méthodes de parsing et j'essaye de parser un document XML. Ce document XML respect une DTD en locale. Mais la méthode parse me ressort une erreur.
 
Voici mon code

Code :
  1. DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
  2.   DocumentBuilder builder = factory.newDocumentBuilder();
  3.   //lecture du fichier
  4.   File f = new File(path);
  5.   doc = builder.parse(f);


 
voila l'erreur que ca me ressort:
java.io.fileNotFoundException: F:\exempleXML\C:\Program Files\Arbortext....\Microcontroller.dtd (le chemind'accès spécifié n'est pas valide)
 
F:\exempleXML est l endroit où se trouve le document XML et
C:\Program Files\Arbortext....\Microcontroller.dtd est le chemin de la dtd que lon peut trouver dans le fichier XML
 
alors j'aimerais bien savoir comment on peut faire en sorte qu'il prenne le bon chemin(bas cette forme collé de deux chemins) ou alors comment désactiver la validation car je n'ai pas besoin de le valider(je préférerais ça d'ailleurs car mes fichiers XML peuvent être énorme).
Merci

Reply

Marsh Posté le 16-08-2005 à 16:01:27   

Reply

Marsh Posté le 16-08-2005 à 17:51:18    

Dans un fichier XML, quand tu mets un chemin pour la DTD, il faut utiliser une URI.
 
Exemple :

Code :
  1. <?xml version="1.0" encoding="ISO-8859-1"?>
  2. <!DOCTYPE elementPrincipal SYSTEM "file://c:/mesDTD/toto.dtd">
  3. ...


 
Dans ton cas le parseur essaye de trouver la DTD via un chemin relatif à ton fichier XML car tu as dû oublier le "file://"
 

Reply

Marsh Posté le 18-08-2005 à 10:58:37    

effectivement c'était à cause de cela que ça plantait, merci. Comme les fichiers XML ce n'est pas moi qui les crée mais je ne fais que les récupérer, je ne l'avais pas vu.
Par contre du coup il me trouve ma dtd, mais il plante du coup sur un element de la DTD(j'utilise dom4j)
 

Code :
  1. <!ENTITY % DocBookDTD PUBLIC "-//OASIS//...//EN"
  2.                 ".//docbookx.dtd">
  3. %DocBookDTD;


 
du coup il me dit :
Entité externe introuvable : "file://.//docbookx.dtd"
 
Alors que le docboox.dtd se trouve bien sur au meme endroit que la dtd "Microcontroller.dtd"
 
Est ce que qqun connait un remède(et comment ca se fait qu'il cherche à lire toutes la dtd alors que je lui ai dit de ne pas valider?)?
 
Si j'utilise javax.xml.parsers.DocumentBuilder.parse(File documentXML), dans ce cas il ne plante pas(mais je préférerais utiliser dom4j que javax.xml)


Message édité par le_moustiq le 18-08-2005 à 11:12:29
Reply

Sujets relatifs:

Leave a Replay

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