DOM est un outil d'analyse puissant adapté aux petits documents
Pourquoi tu dis ça ? Parce qu'il chargera l'intégralité du document XML en mémoire pour former une arborescence d'objets de document
Dans l’ensemble, cela semble effrayant, mais l’utiliser pour lire de petites choses est assez pratique par rapport à Sax.
Quant à ses opérations d'ajout et de suppression, etc., je n'ai pas l'intention de l'écrire. Quand je regardais le tutoriel, j'ai failli vomir à cause du code laid.
C'est précisément pour cette raison que des outils tels que jdom et dom4j ont existé plus tard...
Pas grand chose à dire, il suffit d'aller voir le code
Exemple d'analyse Dom
importer javax.xml.parsers.DocumentBuilder ;
importer javax.xml.parsers.DocumentBuilderFactory ;
importer org.w3c.dom.Document ;
importer org.w3c.dom.Element ;
importer org.w3c.dom.NamedNodeMap ;
importer org.w3c.dom.Node ;
importer org.w3c.dom.NodeList ;
Démo de classe publique {
public static void main (String[] args) lève une exception {
//Créer une instance de fabrique d'analyseur et générer un analyseur
Usine DocumentBuilderFactory = DocumentBuilderFactory.newInstance();
Générateur DocumentBuilder = factory.newDocumentBuilder();
//Créer l'objet document qui doit être analysé
Fichier f = nouveau Fichier("books.xml");
//Analyse le document et renvoie un objet Document À ce stade, le document XML a été chargé en mémoire.
//D'accord, rendons l'analyse plus intense, et le reste consiste à obtenir les données.
Document doc = builder.parse(f);
//Récupère l'élément racine du document
//Vous me demandez pourquoi je fais cela ? Parce que l'objet document lui-même est une structure arborescente, et c'est la racine de l'arborescence.
//Bien sûr, vous pouvez également rechercher directement la collection d'éléments et omettre cette étape
Racine de l'élément = doc.getDocumentElement();
//Le nœud racine a été trouvé ci-dessus, et ici nous commençons à obtenir la collection d'éléments sous le nœud racine.
NodeList list = root.getElementsByTagName("book");
pour (int i = 0; i < list.getLength(); i++) {
//Trouvez le nœud dans la collection via la méthode item() et convertissez-le en objet Element
Élément n = (Élément) list.item(i);
//Obtenez la carte d'attributs dans l'objet, utilisez une boucle for pour extraire et imprimer
Noeud NamedNodeMap = n.getAttributes();
pour (int x = 0; x < node.getLength(); x++) {
Nœud nn = node.item(x);
System.out.println(nn.getNodeName() + ": " + nn.getNodeValue());
}
// Imprimer le contenu de l'élément, le code est très compliqué, presque un format fixe
System.out.println("title: " +n.getElementsByTagName("title").item(0).getFirstChild().getNodeValue());
System.out.println("auteur: " + n.getElementsByTagName("auteur").item(0).getFirstChild().getNodeValue());
System.out.println();
}
}
}
Résultat de sortie :