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.
-
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? -
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?)
- Vous pouvez écrire une simple classe d'aide pour accomplir votre tâche autour de DOM. Voir ce stackoverflow.com/a/8346867/851432
Vous devez vous connecter pour publier un commentaire.
Terminé l'exemple de code et ajouté quelques lignes pour obtenir les attributs.
Cela devrait vous aider à démarrer, bien que j'ai l'impression que vous avez besoin pour obtenir vous-même à jour avec les notions de base de la DOM. Cette site (et bien d'autres) peut vous aider avec ça. Le plus important est de comprendre les différents types de nœuds il y a des.
Valeur de texte qui est entouré par des balises XML sont également considérés comme Nœud dans les DOM. C'est pourquoi vous devez obtenir le Nœud de texte avant d'obtenir la valeur. Si vous essayez de compter le nombre de nœud dans un
<Item>
, vous verrez que chaque fois qu'il y a un texte, il existe un nœud.XOM a interface plus intuitive, mais il n'a pas
org.w3c.dom.*
interface.Si vous souhaitez utiliser l'analyseur, vous devriez regarder http://www.java-samples.com/showtutorial.php?tutorialid=152
La
DOMParser
vous avez essayé d'utiliser sont la propriété et il n'est pas portable.Texte à l'intérieur d'éléments xml sont dans les nœuds de texte parce que les sous-éléments peuvent être mélangés avec du texte. Par exemple:
Élément de Un a trois enfants: un nœud de texte, l'élément B, d'un autre nœud de texte.