【发布时间】:2010-11-27 09:39:32
【问题描述】:
我正在使用内置的 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 选项,它应该可以满足我的需求。然而,它似乎被忽略了。
【问题讨论】:
-
设置OutputKeys.METHOD的xml值。
-
对于我正在做的事情,它需要是 html
-
这是根据 XSLT'specs 的标准行为,如果您使用非默认字符集编码,浏览器会要求这样做。