Я попытался использовать Saxon вместо стандартной реализации JDK (я полагаю, Xalan) для преобразования XML и Xpath. В моем коде я создаю узел CDATA, используя метод document.createCDATASection (data). Код выглядит так, как показано ниже:
CDATASection cdata = doc.createCDATASection("data");
Node valueNode = node.appendChild(doc.createElement("value"));
valueNode.appendChild(cdata);
Где узел - это какой-то случайный узел в моем XML. Он отлично работает с реализацией JDK по умолчанию, и результирующий XML выглядит так:
<node>
<value><![CDATA[data]]></value>
</node>
Тот же код начинает вести себя странно, если я включаю артефакт Saxon maven (обратите внимание, что это просто включение, а выбор фабрики / создание экземпляра по умолчанию, как это было раньше), и все узлы cdata обрабатываются как простые текстовые узлы, т.е. XML становится:
<node>
<value>data</value>
</node>
который при извлечении вызывает проблемы, поскольку этот код специально проверяет элементы cdata, которые в более позднем случае были удалены. Я не уверен, почему это происходит (похоже, я использовал его неправильно). Я также попытался исключить артефакты Xerces из моего POM (транзитивная зависимость для Saxon), но безуспешно. Кроме того, проверено, что классы реализации для DocumentBuilderFactory и т. Д. Используются из самого JDK. Эксперты, пожалуйста, помогите мне, если я что-то делаю не так.
Заранее спасибо.