Deaktiviert die XML-Validierung basierend auf der externen DTD / XSD

8

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:

  • Implementieren Sie meine eigene DocumentBuilderFactory.
  • Erzwinge die Konstruktion von Xerces DocumentBuilderImpl und modifiziere die features Hashtable (add http://apache.org/xml/features/nonvalidating/load-external-dtd ).
Yuri Geinish 04.05.2011, 12:41
quelle

1 Antwort

6

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 wurde     
alexbrn 23.05.2011 16:43
quelle

Tags und Links