middle
Что такое JAXP?
JAXP (Java API for XML Processing) — стандартный набор API в составе JDK, предоставляющий единый интерфейс для обработки XML-документов в Java. JAXP абстрагирует конкретную реализацию парсера, позволяя переключаться между разными парсерами (Xerces, Crimson и др.) без изменения кода приложения.
Что входит в JAXP
- DOM API (
javax.xml.parsers.DocumentBuilder) — построение дерева документа - SAX API (
javax.xml.parsers.SAXParser) — событийный парсинг - StAX API (
javax.xml.stream.*) — потоковый парсинг - XSLT API (
javax.xml.transform.Transformer) — трансформация документов - Validation API (
javax.xml.validation.*) — валидация по DTD и XSD
Принцип работы
JAXP использует паттерн Abstract Factory: приложение запрашивает фабрику (DocumentBuilderFactory, SAXParserFactory, XMLInputFactory), которая создает конкретный парсер. Реализация определяется через механизм ServiceLoader или системные свойства.
Пример
// JAXP — код не зависит от конкретной реализации парсера
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document doc = builder.parse("config.xml");
На собеседовании: ключевое — JAXP не является парсером сам по себе, это API-абстракция над DOM, SAX, StAX и XSLT. Частая ошибка — путать JAXP с JAXB (маршаллинг Java-объектов в XML и обратно).