[英]How to avoid adding XMLNS when using using Java XML Transformer?
[英]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.