Gibt es eine Möglichkeit, XML-Validierung basierend auf externer DTD / XSD zu deaktivieren, ohne Änderungen am Quellcode (der Bibliotheken, die DocumentBuilder erstellen)? So etwas wie JVM-weite Standardeinstellungen für DocumentBuilderFactory-Funktionen und dasselbe für SAX?
Die Validierung ist großartig, wenn Sie Dateien in der IDE bearbeiten, aber ich brauche nicht, dass meine Webanwendung nicht startet, nur weil somelib.net ausgefallen ist.
Ich weiß, dass ich lokale DTD / XSD-Speicherorte angeben kann, aber das ist eine unbequeme Abhilfe.
Was sind die Optionen? Ich kann an zwei denken:
features
Hashtable (add http://apache.org/xml/features/nonvalidating/load-external-dtd
). Die Deaktivierung der Validierung verhindert möglicherweise nicht, dass ein Prozessor eine DTD abruft, da dies immer noch der Fall ist, um Attributvorgaben usw. in der DTD zu verwenden (die in der Baumstruktur platziert werden), selbst wenn dies nicht der Fall ist em> Validierung gegen die Grammatik der DTD.
Eine Technik zur Verhinderung von Netzwerkaktivität bei der Verarbeitung eines XML-Dokuments besteht darin, einen "Ausblendungs-Resolver" wie folgt zu verwenden:
%Vor%und dann setzen Sie dies vor der Verarbeitung wie folgt:
%Vor%Sie werden dann auch sicher sein, dass das zu verarbeitende Dokument nicht durch irgendwelche Informationen aus der DTD.y
verändert wurdeTags und Links java xml xsd dtd validation