Coś nie tak z odczytem z XML

0

Witam, mam problem z odczytam XML ponieważ nie wyświetlami odczytanych danych.

public static void kamil2() {
        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
        DocumentBuilder builder;
        try {
            builder = factory.newDocumentBuilder();
            Document doc = builder.parse("Test.xml");
            
            Element root = doc.getDocumentElement();
            
            NodeList children =root.getChildNodes();
            
            for(int i=0;i<children.getLength();i++)
            {
                Node child = children.item(i);
                if(child instanceof Element)
                {
                    Element childElement=(Element)child;
                    Text textNode=(Text) childElement.getFirstChild();
                    
                    String text = textNode.getData();
                    
                           
                    if(childElement.getTagName().equals("name"))
                    {
                        t1=text;
                    }
                    else if(childElement.getTagName().equals("size"))
                    {
                        t2=text;
                    }
                }
                System.out.println(t1+" "+t2);
            }
            
        } catch (ParserConfigurationException ex) {
            Logger.getLogger(NewJFrame.class.getName()).log(Level.SEVERE, null, ex);
        } catch (SAXException ex) {
            Logger.getLogger(NewJFrame.class.getName()).log(Level.SEVERE, null, ex);
        } catch (IOException ex) {
            Logger.getLogger(NewJFrame.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

a o to plik xml

<?xml version="1.0" encoding="UTF-8" ?> 
<configuration>
    <title>
        <font>
           <name>Hello</name> 
           <size>world</size> 
        </font>
    </title>
</configuration>

Z góry dziękuję za każdą pomoc.

Pozdrawiam.

0

Napisałeś ten program, jakbyś używał SAXa, natomiast to jest zwykłe drzewo DOM i trzeba chodzić po nim ręcznie.(chyba, że użyjesz getElementsByTagName())

root.getChildNodes() zawiera dokładnie jeden element (<title>). <title> też ma jeden podelement (< font>)

Aby dostać się z roota do węzła <name> trzeba trzykrotnie wchodzić wgłąb wybierając pierwszego syna.

 Element hello = (Element) root.getChildNodes().item(1).getChildNodes().item(1).getChildNodes().item(1);   
/* lub: Element hello = (Element) root.getElementsByTagName("name").item(0);*/     
System.out.println(((Text)hello.getFirstChild()).getData()); 
</span>

1 użytkowników online, w tym zalogowanych: 0, gości: 1