ClassCastexception Чтение XML-файла
-
04-10-2019 - |
Вопрос
У меня есть следующий файл XML:
<?xml version="1.0" encoding="UTF-8"?>
<c1>
<c2 id="0001" n="CM" urlget="/at/CsM" urle="/E/login.jsp">
</c2>
<c2 id="0002" n="C2M" urlget="/a2t/CsM" urle="/E2/login.jsp">
</c2>
</c1>
Я пытаюсь загрузить атрибуты C2 таким образом:
Document d =
DocumentBuilderFactory.newInstance()
.newDocumentBuilder()
.parse("epxy.xml");
Element c1 = d.getDocumentElement();
Element c2 = (Element)c1.getFirstChild();
while (c2 != null) {
...
c2 = (Element)c2.getNextSibling();
}
Но я получаю исключение java.lang.classcastexception: org.apache.xerces.dom.deferredTextimpl несовместимо с org.w3c.com.Elementв соответствии
Element c2 = (Element)c1.getFirstChild();
до цикла.
Любые подсказки? Спасибо.
Решение
Первый ребенок - это пробел между концами C1 и началом C2.
Использование W3C DOM для прогулки на дереве не так просто. Если вам не нужно использовать W3C, я рекомендую Dom4J. - Это намного приятнее использовать. Например, он будет фильтровать текстовые узлы из элементов, поэтому вы можете позвонить
List children = c1.elements();
или, чтобы ограничить по имени
List children = c1.elements("c2");
Другие советы
Первый ребенок C1 является текстовым узлом, содержащим новую строку. Вам нужно повторять детей, пропускающих текстовые узлы.
Не связан с StackOverflow