如何防止Java XML转换器使用;HTML";添加<;META>;标签?

如何防止Java XML转换器使用;HTML";添加<;META>;标签?,java,xml,xslt,transform,Java,Xml,Xslt,Transform,我正在使用内置的JavaXML转换器将XML文档序列化为文本。然而,当我以HTML模式输出时,我遇到了一个问题 每当我插入head元素时,内置转换器就会决定插入一个带有内容类型数据的META标记。我不希望这个标签在我的数据中,我似乎找不到一个输出参数,将禁用此功能。我知道我可以构建一个xslt样式表并去掉有问题的标记,但如果能够在转换器本身上设置一个禁用它的参数,则会更简单 你可能会回答“但你真的应该有这个标签”——相信我,我不需要它,为了简洁起见,我不会去做 示例代码 Document d;

我正在使用内置的JavaXML转换器将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);
文件d;
//d=
变压器t//在没有指定xslt的情况下正确初始化
t、 setOutputProperty(OutputKeys.METHOD,“html”);
t、 setOutputProperty(OutputKeys.INDENT,“no”);
t、 变换(新的DOMSource(d),结果);
系统输出打印项次(结果);
返回

<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
标记。我如何以最简单的方式摆脱它

更新:


我遇到了选项
{http://xml.apache.org/xalan}省略元标记
,它应该完成我正在寻找的任务。然而,它似乎被忽略了。

这是一个复杂的情况,因为它似乎是
”{http://xml.apache.org/xalan}省略元标记“
在内置java转换中被忽略

因此,简单的答案是下载类似xalanj的东西,并手动将其放入类路径中

尝试添加以下内容:

trans.setOutputProperty(OutputKeys.METHOD, "xml");
trans.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
使用Java 8 u 131

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

似乎按预期工作

设置OutputKeys.METHOD的xml值。根据XSLT的标准行为,它需要是html,如果您使用其他字符集编码而不是默认编码,则浏览器需要它。如果这样做,您必须确保将它放在已认可的目录中,这样它就覆盖了Java内置的版本。有关详细信息,请参阅。