0

Al leer un archivo XML en Java, me sale dicho error. Dejo por aquí el código:

 public static void main(String[] args) throws ParserConfigurationException, SAXException 
{ 
    try {
        File file = new File("ficheroxmlejercicio2.xml");
        
        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
        DocumentBuilder db = dbf.newDocumentBuilder();
        
        Document document = db.parse(file);
        document.getDocumentElement().normalize();
        
        System.out.println("Root Element :" + document.getDocumentElement().getNodeName());
        
        NodeList nList = document.getElementsByTagName("persona");

        System.out.println("----------------------------");
        for (int temp = 0; temp < nList.getLength(); temp++) {
            Node nNode = nList.item(temp);
            System.out.println("\nCurrent Element :" + nNode.getNodeName());
            
            if (nNode.getNodeType() == Node.ELEMENT_NODE) {
                Element eElement = (Element) nNode;
                System.out.println("Nombre : " + eElement.getElementsByTagName("nombre").item(0).getTextContent());
                System.out.println("Apellido : " + eElement.getElementsByTagName("apellido").item(0).getTextContent());
                
                System.out.println("Fecha de nacimiento : "+ eElement.getElementsByTagName("fecha_nacimiento").item(0).getTextContent());
                
                NodeList nList2 = document.getElementsByTagName("fecha_nacimiento");

                for (int temp2 = 0; temp2 < nList2.getLength(); temp2++) {
                    
                    Node nNode2 = nList2.item(temp2);
                    System.out.println("\nCurrent Element :" + nNode2.getNodeName());
                    
                    if (nNode2.getNodeType() == Node.ELEMENT_NODE) {
                        
                        Element eElement2 = (Element) nNode2;
                        
                        System.out.println("Día : " + eElement2.getElementsByTagName("día").item(0).getTextContent());
                        System.out.println("Mes : " + eElement2.getElementsByTagName("mes").item(0).getTextContent());
                        System.out.println("Año : " + eElement2.getElementsByTagName("año").item(0).getTextContent());

                    }
                }
                
                System.out.println("Ciudad : " + eElement.getElementsByTagName("ciudad").item(0).getTextContent());

            }
        }
    }
    catch(IOException e) {
        System.out.println(e);
    } 
}
  • El error es en la línea:

System.out.println("Fecha de nacimiento : "+ eElement.getElementsByTagName("fecha_nacimiento").item(0).getTextContent());

introducir la descripción de la imagen aquí

También adjunto foto de los imports:

introducir la descripción de la imagen aquí

Comentando la línea el programa funciona perfectamente, pero obviamente sin escribir dichas líneas por pantalla

El código lo he cogido de esta web, por si alguien le quiere echar un vistazo

https://www.delftstack.com/es/howto/java/java-read-xml/

Pablo Lozano
  • 45,934
  • 7
  • 48
  • 87
Guillemj
  • 49
  • 7
  • El mensaje de error es bastante explicativo: `eElement.getElementsByTagName("fecha_nacimiento").item(0)` devuelve null, por lo que `.getTextContent()` no tiene sentido. Esto seguramente es debido a que no tengas etiquetas `` en tu XML – Pablo Lozano Nov 30 '21 at 13:31

0 Answers0