簡體   English   中英

如何阻止使用“HTML”方法添加Java XML Transformer <META> 標簽?

[英]How do I prevent the Java XML Transformer using “HTML” method from adding <META> tag?

我正在使用內置的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這個應該做我正在尋找的選項。 然而,它似乎被忽略了。

嘗試添加如下:

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

這是一個復雜的情況,因為在內置的java變換中似乎忽略了"{http://xml.apache.org/xalan}omit-meta-tag"

所以簡短的回答是下載像xalanj這樣的東西並手動將它放在你的類路徑中。

使用Java 8 u 131,

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

似乎按預期工作

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM