DTD-Referenzen in DocumentBuilder.parse ignorieren
Beim Parsen einer XML-Datei, die auf eine externe DTD (Document Type Definition) verweist, kann es zu Problemen kommen Fehler, wenn die DTD nicht verfügbar ist oder Sie keine Validierung anhand dieser durchführen möchten. Um die Datei zu analysieren und dabei DTD-Referenzen zu ignorieren, führen Sie die folgenden Schritte aus:
Lösung:
Konfigurieren Sie die DocumentBuilderFactory, um die DTD-Validierung zu deaktivieren:
<code class="java">DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); // Disable validation dbf.setValidating(false); // Disable namespace awareness (optional) dbf.setNamespaceAware(false); // Disable specific features that load DTDs 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);</code>
Sobald die DocumentBuilderFactory konfiguriert ist, können Sie mit der Erstellung eines DocumentBuilders und dem Parsen der Datei fortfahren:
<code class="java">DocumentBuilder db = dbf.newDocumentBuilder(); Document doc = db.parse(f);</code>
Durch Deaktivieren der DTD-Validierung und verwandter Funktionen ignoriert der Parser Verweise auf externe DTDs und fährt mit dem Parsen der XML-Datei fort ohne einen Fehler auszulösen. Es ist wichtig zu beachten, dass diese Lösung möglicherweise nicht für alle Szenarien geeignet ist, beispielsweise wenn Sie sich bei der Datenvalidierung auf die DTD verlassen.
Das obige ist der detaillierte Inhalt vonWie analysiere ich XML-Dateien und ignoriere externe DTD-Referenzen in Java?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!