DTD-Referenzen mit DocumentBuilder.parse ignorieren
Beim Parsen von XML-Dateien mit Referenzen auf externe DTDs (Document Type Declarations) kann ein Fehler auftreten wenn die DTD nicht verfügbar oder nicht zugänglich ist. Um dieses Problem zu lösen und DTD-Referenzen beim Parsen zu ignorieren, legen Sie verschiedene Funktionen in der DocumentBuilderFactory fest:
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();
Wenn diese Funktionen deaktiviert sind, ignoriert der DocumentBuilder DTD-Referenzen und fährt mit dem Parsen des XML fort.
Spezifische Funktionsoptionen können je nach Parser-Implementierung variieren. Beispielsweise bietet die Xerces2-Parser-Dokumentation zusätzliche Einblicke in die Deaktivierung des DTD-Ladens und der DTD-Validierung. Durch das Festlegen dieser Funktionen können Sie XML-Dateien ohne externe DTDs analysieren und so sicherstellen, dass Verarbeitungsfehler minimiert werden.
Das obige ist der detaillierte Inhalt vonWie kann ich DTD-Referenzen ignorieren, wenn ich XML-Dateien mit DocumentBuilder.parse parse?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!