2011-10-24 26 views
2

我有一個DOM文檔,並使用XPath提取某個節點。之後,我想將該節點序列化爲XML。我使用下面的代碼:如何輸出包含全局名稱空間定義的單個DOM節點

TransformerFactory 
     .newInstance() 
     .newTransformer() 
     .transform(new DOMSource(node), 
       new StreamResult(getOutputStream())); 

該作品在一個簡單的文件,而是考慮以下文件:

<xml xmlns:foo="..."> 
    <bar foo:bar="xyz" /> 
</xml> 

在這種情況下,如果我想要序列節點「欄」,然後上面休息代碼,因爲變壓器說:

命名空間前綴「富」還沒有被宣佈

如何獲得轉換器將名稱空間定義複製到新文檔中?

回答

2

將您的DocumentBuilderFactory設置爲可識別名稱空間。

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); 
factory.setNamespaceAware(true); 
+0

在這種情況下,TransformerFactory與DocumentBuilderFactory有什麼關係? – AVK

+0

谷歌,並找出 –

+0

我的意思是,這個問題並不一定意味着上述XML文檔來自DocumentBuilderFactory。例如,它可能起源於SAAJ的SOAPBody,在這種情況下,您的答案無論如何都無濟於事。 – AVK

相關問題