【问题标题】:How do I prevent the Java XML Transformer using "HTML" method from adding <META> tag?如何防止使用“HTML”方法的 Java XML Transformer 添加 <META> 标记?
【发布时间】: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 的标准行为,如果您使用非默认字符集编码,浏览器会要求这样做。

标签: java xml xslt transform


【解决方案1】:

使用 Java 8 u 131,

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

似乎按预期工作

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    【解决方案3】:

    尝试在下面添加:

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

    【讨论】:

      猜你喜欢
      • 2013-01-07
      • 2010-12-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-14
      • 2015-11-16
      • 2020-05-15
      • 1970-01-01
      相关资源
      最近更新 更多