在JAVA中,我使用importNode將節點從一個XML文檔複製到另一個新文檔。在原始文檔中定義了一個xmlns,但在輸出文檔中,我希望不會爲每個複製的元素定義xmlns。怎麼做?如何避免在使用Java XML Transformer時添加XMLNS?
1
A
回答
1
javax.xml.transform.Transformer中使用具有如下定義XSL似乎是一個很好的解決方案:
String stylesheet = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" +
"<xsl:stylesheet version=\"1.0\" xmlns:xsl=\"http://www.w3.org/1999/XSL/Transform\">" +
"<xsl:output method=\"xml\" version=\"1.0\" indent=\"no\"/>" +
"<xsl:template match=\"*\">" +
"<xsl:element name=\"{local-name()}\">" +
"<xsl:for-each select=\"@*\">" +
"<xsl:attribute name=\"{local-name()}\">" +
"<xsl:value-of select=\".\"/>" +
"</xsl:attribute>" +
"</xsl:for-each>" +
"<xsl:apply-templates/>" +
"</xsl:element>" +
"</xsl:template>" +
"</xsl:stylesheet>";
StreamSource xslSource = new StreamSource(new StringReader(stylesheet));
Transformer transformer = tf.newTransformer(xslSource);
1
這取決於你的意思。當XML文檔具有xmlns時,它實際上是元素名稱的縮寫;例如如果XMLNS是「http://example.com/#」,那麼真元爲
<foo attr="xxx">...</foo>
名字是http://example.com/#foo
,你將無需通過xmlns如果你想寫成
<http://example.com/#foo attr="xxx">...</http://example.com/#foo>
您輸出XML看起來像這樣,應該可以通過調整XML編寫器參數來實現它。
如果你希望你的輸出XML看起來像原始的,但沒有xmlns,你實際上是改變了XML的含義。乾淨的方法是使用XSL變壓器。
1
你說你正在使用Java XML Transformer,但不清楚你是指標識轉換器(TransformerFactory.newTransformer())還是Java接口到XSLT轉換。
聽起來好像您正在使用的操作在需要對其進行轉換的操作時複製文檔(例如,通過更改元素名稱)。
相關問題
- 1. 避免隨機添加xmlns屬性
- 2. 避免在應用XSLT時在xml響應中添加xmlns屬性
- 3. 如何在使用vbscript創建XML元素時避免xmlns屬性?
- 4. 在xml中添加xmlns =「」
- 5. 如何在Java-XML中禁用/避免&符號轉義?
- 6. 如何防止使用「HTML」方法的Java XML Transformer添加<META>標記?
- 7. 在Javascript中,如何避免在添加數組時添加NaN
- 8. 如何將xmlns添加到xml文檔?
- 9. 如何避免在Java中使用「isDebugEnabled()」?
- 10. 使用Java XML Transformer和網絡代理
- 11. 在Java中解析XML文件時如何避免讀取DTD?
- 12. 如何避免在Java中
- 13. 如何在使用nuget包時避免生成xml文檔
- 14. 避免在XML
- 15. 如何在使用DropShadowEffect時避免OutOfMemoryException?
- 16. 如何在使用BakcgroundWorker時避免invalidOperationException?
- 17. 如何在使用ArrayList時避免ConcurrentModificationException?
- 18. 如何避免在Java
- 19. 如何避免在java中
- 20. 如何在添加指令時多次避免角加載?
- 21. 如何在將對象序列化爲XML時添加XML名稱空間(xmlns)
- 22. 如何在使用emplace添加到std :: map時避免臨時副本?
- 23. 如何避免在XML中使用XML :: Twig的屬性交換
- 24. 在JAVA中使用cplex時如何避免內存泄漏?
- 25. 如何在java中使用BufferStrategy時避免黑線
- 26. XmlMassUpdate - 如何不添加xmlns?
- 27. 避免RTTI在Java
- 28. 避免在添加嵌入式閃存時使用「GET」方法
- 29. Java和XML:避免後向兼容
- 30. Oracle:加載java類時如何避免「java session state cleared」錯誤?
你知道怎麼做纔不至於XSL轉換?我使用常規變換器,然後到我從原始XML複製的每個節點都添加了xmlns - 這是我不想要的。 – Inez
我想你的應用程序可以訪問文檔中的每個'Element'節點並使用'setPrefix(...)'來改變元素的前綴。有警告;閱讀javadoc。 –