DOMException при клонировании XML-узла - PullRequest
1 голос
/ 15 февраля 2010

Метод cloneNode () в следующем минимальном примере работает на Java 1.6, но создает исключение DOME с кодом 14 под Android 5.

Код 14 в соответствии с SDK DOCS означает: «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 голосов
/ 07 марта 2012

Видимо, это известная ошибка с cloneNode и importNode: https://stackoverflow.com/a/8438416/671393

"Обходной путь" - использовать вместо него acceptNode, но, очевидно, это изменит исходный DOM.

Эта ошибка исправлена ​​в более поздних версиях: http://code.google.com/p/android/issues/detail?id=2735#c4

Если ошибка действительно связана с тем, что узлы не распознают пространство имен (как предложено в отчете об ошибке), то добавление фиктивного пространства имен может быть другим обходным путем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...