Как проверить xml-файл с данным xsd-файлом, анализируя его с помощью синтаксического анализатора саксофона? - PullRequest
6 голосов
/ 27 октября 2009

Я хочу проанализировать xml-файл с помощью SAXParser или XMLReader и убедиться, что файл соответствует определенному xsd файлу (new File( "example.xsd" )).

Легко

  1. выполните проверку по xsd-файлу на дополнительном этапе, используя Validator, как в этот ответ SO .

  2. для проверки при синтаксическом анализе, указав имя xsd как "http://apache.org/xml/properties/schema/external-noNamespaceSchemaLocation", как в этот ответ SO .

Но как я могу проверить new File( "example.xsd" ) при разборе ?

1 Ответ

3 голосов
/ 27 октября 2009

Предполагая Java 5 или выше, установите схему в SAXParserFactory :

SchemaFactory schemaFactory = SchemaFactory
    .newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
Schema schema = schemaFactory.newSchema(new File("myschema.xsd"));
SAXParserFactory saxFactory = SAXParserFactory.newInstance();
saxFactory.setSchema(schema);
SAXParser parser = saxFactory.newSAXParser();
parser.parse("data.xml", new DefaultHandler() {
  // TODO: other handler methods
  @Override
  public void error(SAXParseException e) throws SAXException {
    throw e;
  }
});

Вы обрабатываете ошибки проверки, переопределяя метод error в своем обработчике и действуя так, как считаете нужным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...