Maison >Java >javaDidacticiel >Comment puis-je ignorer les références DTD lors de l'analyse de fichiers XML avec DocumentBuilder.parse ?

Comment puis-je ignorer les références DTD lors de l'analyse de fichiers XML avec DocumentBuilder.parse ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-10-29 19:05:30538parcourir

How can I ignore DTD references when parsing XML files with DocumentBuilder.parse?

Ignorer les références DTD avec DocumentBuilder.parse

Lors de l'analyse de fichiers XML avec des références à des DTD externes (déclarations de type de document), une erreur peut se produire si la DTD n'est pas disponible ou est inaccessible. Pour surmonter ce problème et ignorer les références DTD lors de l'analyse, définissez diverses fonctionnalités sur DocumentBuilderFactory :

DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();

dbf.setValidating(false);
dbf.setNamespaceAware(true);
dbf.setFeature("http://xml.org/sax/features/namespaces", false);
dbf.setFeature("http://xml.org/sax/features/validation", false);
dbf.setFeature("http://apache.org/xml/features/nonvalidating/load-dtd-grammar", false);
dbf.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false);

DocumentBuilder db = dbf.newDocumentBuilder();

Avec ces fonctionnalités désactivées, DocumentBuilder ignorera les références DTD et procédera à l'analyse du XML.

Les options de fonctionnalités spécifiques peuvent varier en fonction de l'implémentation de l'analyseur. Par exemple, la documentation de l'analyseur Xerces2 fournit des informations supplémentaires sur la désactivation du chargement et de la validation des DTD. En définissant ces fonctionnalités, vous pouvez analyser les fichiers XML sans avoir besoin de DTD externes, garantissant ainsi que les erreurs de traitement sont minimisées.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn