Analyse de fichier XML avec DOM (Java)

Je veux analyser l'url suivante: http://eutils.ncbi.nlm.nih.gov/entrez/eutils/esummary.fcgi?db=nucleotide&id=224589801

Comme un résultat, je suis venu avec la méthode suivante:

public void parseXml2(String URL) {
    DOMParser parser = new DOMParser();

    try {
        parser.parse(new InputSource(new URL(URL).openStream()));
        Document doc = parser.getDocument();

        NodeList nodeList = doc.getElementsByTagName("Item");
        for (int i = 0; i < nodeList.getLength(); i++) {
            Node n = nodeList.item(i);
            Node actualNode = n.getFirstChild();
            if (actualNode != null) {
                System.out.println(actualNode.getNodeValue());
            }
        }

    } catch (SAXException ex) {
        Logger.getLogger(TaxMapperXml.class.getName()).log(Level.SEVERE, null, ex);
    } catch (IOException ex) {
        Logger.getLogger(TaxMapperXml.class.getName()).log(Level.SEVERE, null, ex);
    }
}

Avec cette méthode, je peut prendre les valeurs de l'Élément de nœuds, mais je ne peux pas prendre l'un de leurs attributs. J'ai essayé d'expérimenter avec getAttribute() avec NamedNodeMap mais toujours en vain.

  1. Pourquoi dois-je faire n.getFirstChild().getNodeValue(); pour obtenir la valeur réelle? n.getNodeValue() retourne simplement la valeur null? N'est-ce pas contre-intuitif, bien évidemment, dans mon cas du nœud n'a pas de sous-nœuds?

  2. Est-il plus robuste et plus largement accepté d'analyser des fichiers XML à l'aide de DOM? Mes fichiers ne vont pas être gros 15 à 20 lignes au maximum, afin SAX n'est pas nécessaire (ou est-il?)

InformationsquelleAutor LordDoskias | 2011-10-26