В Java 6 вся реализация XML-синтаксического анализатора/сериализатора xerces теперь находится в среде выполнения Java (rt.jar). Пакеты были перемещены в пространстве имен com.sun. *, Что делает их недоступными для явной ссылки в клиентском коде. Это не проблема при использовании синтаксического анализатора, который создается через javax API-определенные фабрики.сериализация xerces в Java 6
Однако наш код также использует сериализацию xerces (org.apache.xml.serialize. *). AFAICT, нет javax.xml API-определенных фабрик для создания экземпляров Serializer и OutputFormat. Это, по-видимому, означает, что единственный способ получить это - это явно вызвать API com.sun.org.apache.xml.serialize. *.
Я нашел классы сериализации в javax.xml.stream, но они, похоже, не обеспечивают какой-либо элемент управления форматированием вывода, такой как класс OutputsFormat xerces.
Вопрос:
Есть ли способ, чтобы получить доступ к Xerces функции сериализации (которая находится в rt.jar) через javax стандартный API, не включая xerces.jar, а также без явного инстанцировании ком. солнце. * классы?
Если нет, существует ли способ, совместимый с javax API, для достижения такого же эффекта?
Здесь мы начали, и мы пришли к выводу. Если вы хотите использовать части Xerces, отличные от Java-API (в частности, сериализацию), нет никакого способа включить Xerces. Мы изменили нашу кодовую базу, чтобы удалить явное упоминание классов Xerces в свойствах системы, позволяя использовать значения по умолчанию при создании парсеров и трансформаторов. Это должно предотвращать конфликты при загрузке, поскольку все значения по умолчанию находятся в com.sun. * –