Как запретить Java XML Transformer, использующему метод «HTML», добавлять тег <META>? - PullRequest
5 голосов
/ 11 сентября 2009

Я использую встроенный Java XML Transformer для сериализации XML-документа в текст. Однако у меня проблема при выводе в режиме HTML.

Всякий раз, когда я вставляю элемент head, встроенный преобразователь решает вставить тег META с данными типа содержимого. Мне не нужен этот тег в моих данных, и я не могу найти выходной параметр, который отключит эту функцию. Я знаю, что мог бы создать таблицу стилей xslt и удалить рассматриваемый тег, но было бы проще просто установить параметр на самом преобразователе, который отключает его.

Вы можете ответить «но у вас действительно должен быть этот тег» - поверьте мне, он мне не нужен, ради краткости я не буду вдаваться в подробности.

Пример кода

Document d; 
//d = <html><head><title></title></head><body></body></html>

Transformer t; //properly inited with no xslt specified

t.setOutputProperty(OutputKeys.METHOD,"html");
t.setOutputProperty(OutputKeys.INDENT,"no");
t.transform(new DOMSource(d), result);

System.out.println(result);

1012 * возвращается *

<html><head><META http-equiv="Content-Type" content="text/html; charset=UTF-8"><title></title><style type="text/css"></style></head><body></body></html>

Показательный пример, я не хочу этот тег META там. Как мне избавиться от него самым простым способом?

UPDATE:

Я наткнулся на опцию {http://xml.apache.org/xalan}omit-meta-tag, которая должна делать то, что я ищу. Однако кажется, что это игнорируется.

Ответы [ 3 ]

4 голосов
/ 26 февраля 2011

Попробуйте добавить ниже:

trans.setOutputProperty(OutputKeys.METHOD, "xml");
trans.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
2 голосов
/ 11 сентября 2009

Это сложная ситуация, так как кажется, что "{http://xml.apache.org/xalan}omit-meta-tag" игнорируется во встроенном преобразовании Java.

Таким образом, краткий ответ - скачать что-то вроде xalanj и поместить его в свой путь к классам вручную.

0 голосов
/ 28 июня 2017

с Java 8 u 131,

transformer.setOutputProperty("{http://xml.apache.org/xalan}omit-meta-tag", "yes"); 

кажется, работает как ожидалось

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...