Faire DocumentBuilder.analyser ignorer les références DTD
Quand je lis mon fichier xml (variable f) dans cette méthode, j'obtiens une erreur
C:\Documents and Settings\joe\Desktop\aicpcudev\OnlineModule\map.dtd (Le système ne peut pas trouver le chemin d'accès spécifié)
Je sais que je n'ai pas la dtd, je n'ai pas besoin d'elle. Comment puis-je analyser ce Fichier objet dans un Document de l'objet tout en ignorant DTD erreurs de référence?
private static Document getDoc(File f, String docId) throws Exception{
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse(f);
return doc;
}
- Je crois que jt a la meilleure réponse à cette question.
Vous devez vous connecter pour publier un commentaire.
Une approche similaire à celle proposée par @anjanb
J'ai trouvé que le fait de simplement retourner un vide InputSource travaillé aussi bien?
Essayez de définir les caractéristiques sur le DocumentBuilderFactory:
En fin de compte, je pense que les options sont spécifiques à l'analyseur de mise en œuvre. Voici un peu de documentation pour Xerces2 si cela aide.
load-external-dtd
) a fait le tour pour moi - merci.dbf.setNamespaceAware(true);
load-external-dtd
paramètre a été assez.J'ai trouvé un problème où le fichier DTD était dans le fichier jar dans un fichier XML. J'ai résolu le problème basé sur les exemples ici, comme suit: -
Source XML Avec DTD)
Java DOM la mise en œuvre d'acceptation ci-dessus XML comme une Chaîne de caractères et la suppression de la déclaration DTD
Destination XML Sans DTD)
Je me méfie de cette déclaration; est-ce que votre document contient toutes les références d'entité? Si donc, vous avez certainement besoin de la DTD.
De toute façon, de la manière habituelle d'empêcher que cela se produise est à l'aide d'un catalogue XML pour définir un chemin d'accès local pour "la carte.dtd".
voici un autre utilisateur qui a eu le même problème : http://forums.sun.com/thread.jspa?threadID=284209&forumID=34
utilisateur ddssot sur ce post dit
L'utilisateur mentionne plus loin "Comme vous pouvez le voir, lorsque l'analyseur frappe la DTD, l'entité de résolution est appelé. Je suis consciente de ma DTD avec son IDENTIFIANT et de retourner un vide de document XML au lieu de la vraie DTD, l'arrêt de tous les validation..."
Espère que cette aide.