Java и XML: как получить список включенных файлов - PullRequest
1 голос
/ 11 июля 2011

У меня проблема с Xinclude или как с сущностью включенными файлами. Мне нужно знать, какие файлы были включены парсером. Пример:

<?xml version="1.0" ?>
<!DOCTYPE docBookChapter [
    <!ENTITY externalFile SYSTEM "entityIncluded.xml">
]>
<chapter xmlns="http://www.w3.org/1999/xhtml"
xmlns:xi="http://www.w3.org/2001/XInclude">
    <title>Third chapter</title>
    <xi:include href="xIncluded.xml"/>
    <chapter>
        &externalFile;</chapter>
</chapter>
Парсер успешно создает DOM, но как получить имена включенных файлов? Элемент xi:include уже заменен содержимым файла.

1 Ответ

1 голос
/ 11 июля 2011

Расширение DefaultHandler и @Overwrite метод resolveEntity.Ваша реализация просто напечатает или зарегистрирует publicId / systemId и вернет null, поэтому SAXParser будет использовать поведение по умолчанию для разрешения сущностей.

Передайте свой подкласс DefaultHandler с помощью конструктора SAXParser.

...