如何使用“HTML”方法阻止Java XML Transformer添加<meta />标记?

时间:2009-09-11 05:13:09

标签: java xml xslt transform

我正在使用内置的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);

返回

<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}omit-meta-tag选项,这应该是我正在寻找的。然而,它似乎被忽略了。

3 个答案:

答案 0 :(得分:4)

尝试添加以下内容:

trans.setOutputProperty(OutputKeys.METHOD, "xml");
trans.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");

答案 1 :(得分:2)

这是一个复杂的情况,因为在内置的java变换中似乎忽略了"{http://xml.apache.org/xalan}omit-meta-tag"

所以简短的回答是下载像xalanj这样的东西并手动将它放在你的类路径中。

答案 2 :(得分:0)

使用Java 8 u 131,

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

似乎按预期工作