6

我正在使用内置的 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应该做我正在寻找的选项。然而,它似乎被忽略了。

4

3 回答 3

6

尝试在下面添加:

trans.setOutputProperty(OutputKeys.METHOD, "xml");
trans.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
于 2011-02-26T12:47:34.080 回答
3

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

所以简短的回答是下载类似 xalanj 的东西并手动将其放入您的类路径中。

于 2009-09-11T06:30:47.000 回答
0

使用 Java 8 u 131,

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

似乎按预期工作

于 2017-06-28T09:45:36.200 回答