Mit JDOM Parsen der XML-Datei mit dem externen DTD, die nicht deklariert wurde in der XML-Datei
In meiner XML-Datei habe ich einige Entitäten wie ’
Also habe ich eine DTD-tag für mein XML-Dokument zur Definition dieser Entitäten. Nachfolgend ist der Java-code zum Lesen der XML-Datei.
SAXBuilder builder = new SAXBuilder();
URL url = new URL("http://127.0.0.1:8080/sample/subject.xml");
InputStream stream = url.openStream();
org.jdom.Document document = builder.build(stream);
Element root = document.getRootElement();
Element name = root.getChild("name");
result = name.getText();
System.err.println(result);
Wie kann ich den Java-code zum abrufen einer DTD über HTTP zu erlauben, die Parsen meiner XML-Dokument fehlerfrei?
Vereinfachtes Beispiel des xml-Dokuments.
<main>
<name>hello ‘ world ’ foo & bar </name>
</main>
- Entitäten müssen deklariert werden, bevor Sie verwendet werden können. Wenn Sie mithilfe von entity-Referenzen, die nicht erklärt worden sind(entweder in der Datei oder mit einer Referenz auf eine externe DTD), Sie haben eine ungültige XML-Datei.
- In der Tat. Mein problem ist die Injektion der Pfad zu meiner DTD in das xml zur Laufzeit, da die dtd ist nicht referenziert wird innerhalb des xml-Dokuments. Die DTD befindet sich auf einem remote-server, erreichbar über http.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Einen Weg, dies zu tun wäre, um das Dokument Lesen und bestätigen Sie anschließend mit der transformer:
Andere Möglichkeit wäre, ersetzen Sie die XML-Titel mit der XML-Titel plus die DTD-Referenz
Durch dies ersetzen:
mit dabei:
Natürlich ersetzen Sie das erste mal vor und nicht nur versuchen, durch zu gehen das ganze xml-Dokument
Haben Sie zum instanziieren der SAXBuilder durch übergeben Sie true(validieren), um den Konstruktor:
oder rufen Sie an: