Wie kann ich leicht ändern, ein XML-Dokument doctype in Java?
Hier ist mein problem:
Mein Programm wird immer XML-Dateien als Eingabe. Diese Dateien möglicherweise oder möglicherweise nicht über eine xml-Deklaration, doctype-Deklaration oder entity-Deklaration, aber Sie alle entsprechen dem selben schema. Bei meinem Programm wird eine neue Datei, die es braucht, um Sie zu inspizieren, und stellen Sie sicher, es hat Erklärungen wie diese:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE my.doctype [
<!ENTITY % entity_file SYSTEM "my.entities.ent">
%entity_file;
]>
Wenn es das, es ist großartig, und ich kann lassen, als Sie ist, aber wenn die Erklärungen fehlen oder falsch ist, muss ich entfernen, was schon da ist und fügen Sie die richtigen Erklärungen.
Wie kann ich diese (möglichst einfach, mit standard-Java-6 und/oder Apache-Bibliotheken)?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Warum müssen Sie zu "entfernen", was schon da ist und fügen Sie die richtigen Erklärungen"?
Wenn Sie die XML-Datei für die Eingabe, und nicht schreiben Sie es wieder in irgendeiner form, dann die entsprechende Lösung ist die Erstellung einer
EntityResolver
.Eine vollständige Beschreibung des Prozesses ist hier, aber der folgende code zeigt, wie der parser Sie Ihre eigene DTD, unabhängig davon, was das Dokument sagt, Sie will:
Dieser code sollte Ihnen den Einstieg in es herauszufinden. Möglicherweise müssen Sie ein neues Dokument ändern Sie den Inhalt der doctype wenn falsch ist, ich weiß nicht, einen Weg, um einen vorhandenen zu ändern.
Wenn Sie haben die Kontrolle über Dokumente, wie diese gebildet werden, versuchen zu vermeiden, DTD, wie Sie führt unnötige Komplexität und ist underpowed auszudrücken schema...