public void create_song_list(Node node, int level) {
        NodeList nodes = node.getChildNodes();  
        String txt, grandfather, father;
        int back_idx = song_list.size() - 1;
        if (song_list.isEmpty() || (!song_list.get(back_idx).artist.isEmpty() && !song_list.get(back_idx).title.isEmpty())) {
           Song s = new Song();
           song_list.add(s);
        }
        for(int i=0, nodes_len=nodes.getLength(); i<nodes_len; i++) {   
        if (nodes.item(i).getNodeType()==Node.TEXT_NODE) { 
            father=nodes.item(i).getParentNode().getNodeName();
            grandfather=nodes.item(i).getParentNode().getParentNode().getNodeName();
            txt=nodes.item(i).getNodeValue(); 
            back_idx = song_list.size() - 1;
            if ("name".equals(father) && "artist".equals(grandfather)) {
                Song tmp = song_list.get(back_idx);
                tmp.set_artist(txt);
                song_list.set(back_idx, tmp);
            }
            if ("name".equals(father) && "track".equals(grandfather)) {
                Song tmp = song_list.get(back_idx);
                tmp.set_title(txt);
                song_list.set(back_idx, tmp);
            }
        } 
        create_song_list(nodes.item(i), level+1);
        }
   }