2010-02-15 55 views
1

的cloneNode()方法在下面的最小示例關於java 1.6工作原理,但根據SDK文檔下的Android 5.拋出:DOMException而克隆XML節點

代碼14的代碼14拋出拋出:DOMException指: 「NAMESPACE_ERR 如果試圖以對命名空間不正確的方式創建或更改對象。「

有沒有人知道爲什麼這可能是? 提前謝謝!

public class M 
{ 
public static void main(String[] args) 
{ 
    try 
    { 
      DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); 
      DocumentBuilder builder = factory.newDocumentBuilder(); 

      String text = new String("<blub></blub>"); 
      Document document = builder.parse(new InputSource(new StringReader(text))); 

      document.getDocumentElement().cloneNode(true); 
    } 
    catch(DOMException e) 
    {} 
    catch(ParserConfigurationException e) 
    {} 
    catch(IOException e) 
    {} 
    catch(SAXException e) 
    {} 
} 
} 
+0

我注意到你忽略了4種不同類型的異常。如果你扔掉DOMException,我不知道你是如何知道這是你得到的例外,或者是什麼。在這樣的測試應用程序中,您可能希望從main中拋出異常,而不是寫空處理程序: 'public static void main(String [] argv)throws Exception {}'。 然後,您可以在運行代碼時看到堆棧跟蹤。 從您的描述中不清楚哪個語句拋出了DOMException。 – iter

+0

你可以嘗試玩factory.setNamespaceAware() – iter

+0

謝謝我已經檢查過,但不幸的是factory.setNamespaceAware()沒有任何影響。我想知道其他人是否可以重現這個問題? btw:我知道我得到了什麼異常,因爲我在eclipse中使用異常斷點或者只是單步執行代碼。如果我會「忽略」異常,我將如何知道異常對象e中的代碼屬性的狀態? 什麼行引發異常寫在我的問題的第一行:「cloneNode()方法[...]拋出[...]」 – beutelfuchs

回答