Проверка Java DTD файлов XML без объявления DTD, включенного в файл XML? - PullRequest
1 голос
/ 20 января 2011

Как я могу использовать внешний файл DTD для проверки моего XML-файла?

DTD будет расположен на некотором URL, например http://localhost/example.dtd

и DTD не указан в файле XML, поэтому мне нужно сделать это в моем Java-сервлете.

Я использую JDOM для текущей обработки файлов XML.

Любая помощь или указатели приветствуются

Ответы [ 2 ]

2 голосов
/ 20 января 2011

Если DTD не указан в файле XML, вы можете использовать Transformer, чтобы добавить его и затем проанализировать, как показано ниже:

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder db = factory.newDocumentBuilder();

//parse file into DOM
Document doc = db.parse(new File("file.xml"));
DOMSource source = new DOMSource(doc);

//now use a transformer to add the DTD element
TransformerFactory tf = TransformerFactory.newInstance();
Transformer transformer = tf.newTransformer();
transformer.setOutputProperty(OutputKeys.DOCTYPE_SYSTEM, "/path/to/file.dtd");
StringWriter writer = new StringWriter();
StreamResult result = new StreamResult(writer);
transformer.transform(source, result);

//finally parse the result. 
//this will throw an exception if the doc is invalid
db.parse(new InputSource(new StringReader(writer.toString())));
2 голосов
/ 20 января 2011

этот вопрос уже был обработан stackoverflow

...