克隆XML节点时出现DOMException

时间:2010-02-15 16:41:48

标签: xml android exception dom

以下最小示例中的cloneNode()方法适用于java 1.6,但在android 5下引发了代码为14的DOMException。

根据sdk docs的代码14意味着: “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)
  {}
 }
}

1 个答案:

答案 0 :(得分:0)

显然这是cloneNode和importNode的已知错误:https://stackoverflow.com/a/8438416/671393

“替代方法”是使用adoptNode,但显然这将修改源DOM。

此错误已在更高版本中修复:http://code.google.com/p/android/issues/detail?id=2735#c4

如果错误确实是由于节点不能识别名称空间(如错误报告中所示),那么添加虚拟命名空间可能是另一种解决方法。