Chase N.Проверка правильности XML

Проверка правильности в JAXP


Как обсуждалось во введении этого учебника, нет необходимости кодировать и выполнять следующие примеры для понимания проверки правильности. Если же вы решите сделать это, использование код Java для разбора (и, разумеется, проверки правильности) документа включает в себя четыре шага. (В следующем подразделе обсуждается .):

  1. Создайте DocumentBuilderFactory. Поскольку DocumentBuilder, который реально разбирает документ, является интерфейсом, экземпляр его не может быть создан непосредственно. Вместо этого создается DocumentBuilderFactory. Эта фабрика имеет определенные свойства, такие, как свойство isValidating(), которые определяют свойства любого созданного при его помощи парсера. Чтобы создать проверяющий парсер, примените setValidating(true) .
  2. Создайте DocumentBuilder. Используйте DocumentBuilderFactory для создания объекта DocumentBuilder, который разбирает документ.
  3. Назначьте ErrorHandler. У парсера нет возможности проверять ваши проблемы, если он не знает, что с ними делать. Используйте метод setErrorHandler() класса DocumentBuilder, чтобы заставить парсер посылать ошибки новому объекту ErrorChecker, который был создан в подразделе .
  4. Разберите документ. Если документ не является правильно форматированным, главный класс, StructureTest, будет генерировать исключение. Если документ является правильно форматированным, но имеет ошибки проверки правильности, парсер посылает их в объект ErrorChecker, который рапортует о них.

Таковы базовые принципы: перед проверкой правильности документа создать проверяющий парсер, определить приемник ошибок проверки правильности и разобрать документ. (Если вы используете старую версию языка Java с парсером Xerces-Java, некоторые детали могут отличаться от описанных в подразделе .)

import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import java.io.File; import org.w3c.dom.Document; public class StructureTest { public static void main (String args[]) { File docFile = new File("memory.xml"); try { DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); dbf.setValidating(true); DocumentBuilder db = dbf.newDocumentBuilder(); ErrorChecker errors = new ErrorChecker(); db.setErrorHandler(errors); Document doc = db.parse(docFile);

} catch (Exception e) { System.out.print("Parsing problem."); } } }



Содержание раздела