Как подавить элемент xml, добавленный Transformer из javax.xml.transform.Transformer - PullRequest
0 голосов
/ 11 октября 2011

Я использовал API-интерфейсы Java для анализа XML-файла, чтобы можно было добавлять, удалять или обновлять элементы / атрибуты. Все работает так, как я хочу, за исключением того, что используемый мной объект Transformer добавляет <?xml version="1.0" encoding="UTF-8"?> в начало файла XML. Мне было интересно, есть ли способ подавить это.

P.S. Я также заметил, что в этом ответе с самым высоким рейтингом упоминается, что мы могли бы подавить его.

DOMSource source = new DOMSource(document);
TransformerFactory tFactory = TransformerFactory.newInstance();
Transformer transformer = tFactory.newTransformer();
FileOutputStream fout = new FileOutputStream(new File(outputFile));            
StreamResult result = new StreamResult(fout);
transformer.transform(source, result);
fout.close();

Оригинальный документ не содержит <?xml version="1.0" encoding="UTF-8"?>

1 Ответ

2 голосов
/ 12 октября 2011

Если вы можете изменить XSLT, просто добавьте

<xsl:output omit-xml-declaration="yes"/>

или, если у вас уже есть элемент <xsl:output.../> в таблице стилей, просто добавьте значение атрибута omit-xml-declaration="yes".

Если вы не можете изменить XML, то, в зависимости от реализации сериализатора конкретного преобразователя, вы можете иметь возможность установить параметр или функцию для отключения объявления XML.Технически это опция выходного сериализатора, а не преобразователь как таковой, и некоторые реализации позволяют передавать параметры в сериализатор.Как вы на самом деле достигнете этого, зависит от реализации.

...