Использование Xerces-j для проверки XML-документа

Я пытаюсь проверить документ XML с помощью Xerces-J.

Я хочу, чтобы валидатор подобрал и разрешил любые связанные файлы XSD или DTD (используя ссылки на schemalocation, nonamespaceschemalocationa и DOCTYPE). Кажется, что загрузка этих ресурсов может быть делегирована классу Resolver.

Однако все примеры, которые я видел, начинаются с создания валидатора из схемы.

Можно ли обойти это по-другому, попросить xerces проверить документ XML и загрузить ли он то, что ему нужно, или я должен сначала проанализировать файл XML в поисках ссылок на схемы, загрузить их, а затем создать валидатор из схем?

В идеальном мире валидатор также поддерживает xsd 1.1

1 ответ

Вы предоставляете парсеру EntityResolver для использования при поиске объявлений org.apache.xml.resolver. Но вы также можете предоставить свою собственную реализацию EntityResolver.

CatalogResolver resolver = new CatalogResolver();
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
dbf.setValidating(true);
dbf.setFeature("http://apache.org/xml/features/validation/dynamic", true);
DocumentBuilder parser = dbf.newDocumentBuilder();
parser.setEntityResolver(resolver);
Document doc = parser.parse(someFile);
Другие вопросы по тегам