Boa tarde eu estou lendo um XML até então sem problemas com a API DOM. Porém preciso ler em um determinado momento os nodos irmãos.
File docXMLfile = new File(this.xmlReaderPath);
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse(docXMLfile);
Element element = doc.getDocumentElement();
processChildNodes(tagCube.getElementsByTagName("Dimension"));
private void processChildNodes(NodeList children)
{
if (children.getLength() > 0)
{
for (int i = 0; i < children.getLength(); i++)
{
dataReader(levels.item(z));
}
}
private void dataReader(Node node)
{
if (node.getNodeName().equals("Level"))
{
Element level = (Element) node;
Level lvl = new Level();
lvl.setLevelName(level.getAttribute("name"));
lvl.setLevelColumn(level.getAttribute("column"));
lvl.setLevelColumnType(level.getAttribute("type"));
Node irmao = node.getNextSibling();
Element irmaoElem = (Element) irmao;
}
}
Estou tentando utilizar o metodo getNextSibling que pelo que vi na documentação, ele pega o nodo irmão próximo caso ele não tenha nodos irmaos é retornado null. Porém ele tá me retornando um nodo do tipo #text e ainda quando vou tentar fazer o cast para Element ele gera um erro:
Exception in thread "main" java.lang.ClassCastException: com.sun.org.apache.xerces.internal.dom.DeferredTextImpl cannot be cast to org.w3c.dom.Element
at br.pbji.model.xml.XMLReader.dataReader(XMLReader.java:153)
at br.pbji.model.xml.XMLReader.processChildNodes(XMLReader.java:108)
at br.pbji.model.xml.XMLReader.cubeReader(XMLReader.java:78)
at br.pbji.view.main.Main.main(Main.java:23)
Alguém pelo amor de deus pode me ajudar? Preciso somente ler os irmãos de um nodo... passo um nodo como parametro e tenho que descubrir quem são seus irmaos.
Obrigado pela atenção.