importNode throws exception org.w3c.dom.DOMException

upsergeEnesee

New Member
I am writing function which must Add Node to the given Node in the XML document.Here is implementation of that function:\[code\]/** * Adds the node aNewChild to the end of the list of children of this node. * If the newChild is already in the tree, it is first removed. * @param aNewChild The node to add.If it is a DocumentFragment object, * the entire contents of the document fragment are moved * into the child list of this node * @return The node added or null. */ public Node AddNode(Node aNode, Node aOldNode) { Log.i(TAG, "AddNode()" ); if (aNode == null) { Log.e(TAG, "aNode is null!"); return null; } if (aOldNode == null) { Log.e(TAG, "aOldNode is null!"); return null; } Document document = aNode.getOwnerDocument(); aOldNode = document.importNode(aOldNode, true); return aNode.appendChild(aOldNode);} /* Node AddNode(Node aNode, Node aOldNode) **/\[/code\]This code run great on Android 4.0.3 with no problems, function add node to the given node without errors, but when I run same code under Android 2.3.3 function crashes on the line \[code\]aOldNode = document.importNode(aOldNode, true);\[/code\] when I try to add try catch block like this:\[code\]try { aOldNode = document.importNode(aOldNode, true);}catch(Exception ex) { Log.e(TAG, ex.getMessage());}\[/code\]I see only \[code\]null\[/code\] instead of error message. Who know whats the reason ?Here is exception:\[code\]06-05 17:58:09.111: I/TestRunner(2769): ----- begin exception ----- 06-05 17:58:09.122: I/TestRunner(2769): org.w3c.dom.DOMException 06-05 17:58:09.122: I/TestRunner(2769): at org.apache.harmony.xml.dom.NodeImpl.setNameNS(NodeImpl.java:227) 06-05 17:58:09.122: I/TestRunner(2769): at org.apache.harmony.xml.dom.ElementImpl.<init>(ElementImpl.java:50) 06-05 17:58:09.122: I/TestRunner(2769): at org.apache.harmony.xml.dom.DocumentImpl.createElementNS(DocumentImpl.java:336) 06-05 17:58:09.122: I/TestRunner(2769): at org.apache.harmony.xml.dom.DocumentImpl.shallowCopy(DocumentImpl.java:156) 06-05 17:58:09.122: I/TestRunner(2769): at org.apache.harmony.xml.dom.DocumentImpl.cloneOrImportNode(DocumentImpl.java:208) 06-05 17:58:09.122: I/TestRunner(2769): at org.apache.harmony.xml.dom.DocumentImpl.importNode(DocumentImpl.java:222) 06-05 17:58:09.122: I/TestRunner(2769): at com.fido.android.framework.service.XMLDOMNode.AddNode(XMLDOMNode.java:108) 06-05 17:58:09.122: I/TestRunner(2769): at com.fido.android.test.framework.service.XMLDOMNodeTest.testAddNodeNodeNode(XMLDOMNodeTest.java:89) 06-05 17:58:09.122: I/TestRunner(2769): at java.lang.reflect.Method.invokeNative(Native Method) 06-05 17:58:09.122: I/TestRunner(2769): at java.lang.reflect.Method.invoke(Method.java:507) 06-05 17:58:09.122: I/TestRunner(2769): at junit.framework.TestCase.runTest(TestCase.java:154) 06-05 17:58:09.122: I/TestRunner(2769): at junit.framework.TestCase.runBare(TestCase.java:127) 06-05 17:58:09.122: I/TestRunner(2769): at junit.framework.TestResult$1.protect(TestResult.java:106) 06-05 17:58:09.122: I/TestRunner(2769): at junit.framework.TestResult.runProtected(TestResult.java:124) 06-05 17:58:09.122: I/TestRunner(2769): at junit.framework.TestResult.run(TestResult.java:109) 06-05 17:58:09.122: I/TestRunner(2769): at junit.framework.TestCase.run(TestCase.java:118) 06-05 17:58:09.122: I/TestRunner(2769): at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:169) 06-05 17:58:09.122: I/TestRunner(2769): at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:154) 06-05 17:58:09.122: I/TestRunner(2769): at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:529) 06-05 17:58:09.122: I/TestRunner(2769): at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1448) 06-05 17:58:09.132: I/TestRunner(2769): ----- end exception -----\[/code\]As I can understand \[code\]importNode\[/code\] is a buggy function, what else can I use to add node to the node ?
 
Back
Top