Maison développement back-end Tutoriel XML/RSS Exemple de lecture et d'analyse de fichier XML Java

Exemple de lecture et d'analyse de fichier XML Java

Jan 11, 2017 pm 01:03 PM

Lisez le fichier XML local et analysez-le via DOM. La caractéristique de l'analyse DOM est de charger l'intégralité du fichier XML dans la mémoire pour former une arborescence DOM. La structure arborescente est pratique pour le parcours et la manipulation.

La caractéristique de l'analyse DOM est de lire le fichier XML et de le convertir en une arborescence dom, et de parcourir les nœuds.

C'est le concept de nœuds du W3c

Si le XML contient une grande quantité de données, en raison de la fonctionnalité de dom chargeant le XML dans la mémoire en même temps, le dom n'est pas adapté pour contenant une grande quantité de données d'analyse XML. Lorsqu'une grande quantité de XML est incluse, l'analyse avec SAX économise de la mémoire.

Ce qui suit est un exemple d'utilisation de DOM pour analyser des fichiers XML :

La structure du fichier XML est la suivante :

<?xml version="1.0" encoding="ISO-8859-1"?>
<bookstore>
 <book category="cooking">
 <title>Everyday Italian</title>
 <author>Giada De Laurentiis</author>
 <year>2005</year>
 <price>30.00</price>
 </book>
 <book category="children">
 <title>Harry Potter</title>
 <author>J K. Rowling</author>
 <year>2005</year>
 <price>29.99</price>
 </book>
 <book category="web">
 <title>XQuery Kick Start</title>
 <author>James McGovern</author>
 <year>2003</year>
 <price>49.99</price>
 </book>
 <book category="web" cover="paperback">
 <title>Learning XML</title>
 <author>Erik T. Ray</author>
 <year>2003</year>
 <price>39.95</price>
 </book>
</bookstore>

Créez une classe pour analyser XML comme suit :

package xml.dom;
 
import java.io.File;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
 
public class ReadXmlFile {
  
 public static void main(String[] args) {
  
 try{
   
  File xmlFile = new File("src/resource/book.xml");
   
  DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance();
   
  DocumentBuilder builder = builderFactory.newDocumentBuilder();
   
  Document doc = builder.parse(xmlFile);
   
  doc.getDocumentElement().normalize();
   
  System.out.println("Root element: "+doc.getDocumentElement().getNodeName());
   
  NodeList nList = doc.getElementsByTagName("book");
   
  for(int i = 0 ; i<nList.getLength();i++){
   
  Node node = nList.item(i);
   
  System.out.println("Node name: "+ node.getNodeName());
  Element ele = (Element)node;
   
  System.out.println("----------------------------");
  if(node.getNodeType() == Element.ELEMENT_NODE){
   
  System.out.println("book category: "+ ele.getAttribute("category"));
   
  System.out.println("title name: "+ ele.getElementsByTagName("title").item(0).getTextContent());
   
  System.out.println("author name: "+ele.getElementsByTagName("author").item(0).getTextContent());
   
  System.out.println("year :"+ele.getElementsByTagName("year").item(0).getTextContent());
   
  System.out.println("price : "+ele.getElementsByTagName("price").item(0).getTextContent());
   
  System.out.println("-------------------------");
   
   
  }
   
   
  }

Résultats de l'analyse :

Root element: bookstore
Node name: book
----------------------------
book category: cooking
title name: Everyday Italian
author name: Giada De Laurentiis
year :2005
price : 30.00
-------------------------
Node name: book
----------------------------
book category: children
title name: Harry Potter
author name: J K. Rowling
year :2005
price : 29.99
-------------------------
Node name: book
----------------------------
book category: web
title name: XQuery Kick Start
author name: James McGovern
year :2003
price : 49.99
-------------------------
Node name: book
----------------------------
book category: web
title name: Learning XML
author name: Erik T. Ray
year :2003
price : 39.95
-------------------------

Ce qui précède consiste à obtenir la valeur correspondante via le nom
Ce qui suit est sorti à l'aide du nœud de boucle :
Le code. pour la méthode de sortie du nœud de boucle est la suivante :

package xml.dom;
 
import java.io.File;
 
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
 
import org.w3c.dom.Document;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
 
public class ReadXmlFile2 {
  
 public static void main(String[] args) {
 try{
   
  File xmlFile = new File("src/resource/book.xml");
   
  DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance();
   
  DocumentBuilder builder = builderFactory.newDocumentBuilder();
   
  Document doc = builder.parse(xmlFile);
   
  doc.getDocumentElement().normalize();
   
  System.out.println("Root element: "+doc.getDocumentElement().getNodeName());
   
   
  if(doc.hasChildNodes()){
   
  printNode(doc.getChildNodes());
  }
 }catch(Exception e){
  
 e.printStackTrace();
  
 }
  
 }
  
 public static void printNode(NodeList nodeList){
 System.out.println("------------------------");
 // System.out.println(nodeList.getLength());
 for(int i = 0; i<nodeList.getLength(); i++){
  
 Node node = (Node)nodeList.item(i);
  
  
 if(node.getNodeType() == Node.ELEMENT_NODE){
  
 System.out.println("node name: "+node.getNodeName());
  
 System.out.println("node value: "+node.getTextContent());
  
 if(node.hasAttributes()){
  NamedNodeMap nodeMap = node.getAttributes();
   
  for(int j = 0; j < nodeMap.getLength() ; j++){
   
  Node nodenew = nodeMap.item(j);
   
  System.out.println("node name "+nodenew.getNodeName());
  System.out.println("node value "+nodenew.getNodeValue());
  }
 }
 if(node.hasChildNodes()){
  printNode(node.getChildNodes());
 }
 }
  
 }
  
 }
 
}

Les résultats de sortie sont les suivants :

Root element: bookstore
------------------------
node name: bookstore
node value: 
  
 Everyday Italian
 Giada De Laurentiis
 2005
 30.00
  
  
 Harry Potter
 J K. Rowling
 2005
 29.99
  
  
 XQuery Kick Start
 James McGovern
 2003
 49.99
  
  
 Learning XML
 Erik T. Ray
 2003
 39.95
  
 
------------------------
node name: book
node value: 
 Everyday Italian
 Giada De Laurentiis
 2005
 30.00
  
node name category
node value cooking
------------------------
node name: title
node value: Everyday Italian
node name lang
node value en
------------------------
node name: author
node value: Giada De Laurentiis
------------------------
node name: year
node value: 2005
------------------------
node name: price
node value: 30.00
------------------------
node name: book
node value: 
 Harry Potter
 J K. Rowling
 2005
 29.99
  
node name category
node value children
------------------------
node name: title
node value: Harry Potter
node name lang
node value en
------------------------
node name: author
node value: J K. Rowling
------------------------
node name: year
node value: 2005
------------------------
node name: price
node value: 29.99
------------------------
node name: book
node value: 
 XQuery Kick Start
 James McGovern
 2003
 49.99
  
node name category
node value web
------------------------
node name: title
node value: XQuery Kick Start
node name lang
node value en
------------------------
node name: author
node value: James McGovern
------------------------
node name: year
node value: 2003
------------------------
node name: price
node value: 49.99
------------------------
node name: book
node value: 
 Learning XML
 Erik T. Ray
 2003
 39.95
  
node name category
node value web
node name cover
node value paperback
------------------------
node name: title
node value: Learning XML
node name lang
node value en
------------------------
node name: author
node value: Erik T. Ray
------------------------
node name: year
node value: 2003
------------------------
node name: price
node value: 39.95
------------------------

Questions sur les nœuds :

<book category="cooking">
<title>Everyday Italian</title>
<author>Giada De Laurentiis</author>
<year>2005</year>
<price>30.00</price>
</book>

Pour le livre applications : doc.getChildNodes() obtient une NodeList dont la longueur est de 9
Les neuf nœuds sont les suivants :
nœud titre
nœud lang
nœud quotidien
nœud auteur
Nœud Giada De Laurentiis
nœud année
nœud 2005
nœud prix
nœud 30,00

Pour plus d'articles liés à la lecture et à l'analyse Java d'exemples de fichiers XML, veuillez faire attention au PHP Site chinois !

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Oguri Cap Build Guide | Un joli Musume Derby
3 Il y a quelques semaines By Jack chen
Guide de construction d'Agnes Tachyon | Un joli Musume Derby
2 Il y a quelques semaines By Jack chen
Guide de construction de Grass Wonder | Uma musume joli derby
2 Il y a quelques semaines By Jack chen
Pic comment émoter
4 Il y a quelques semaines By Jack chen

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

XML: Les espaces de noms sont-ils requis? XML: Les espaces de noms sont-ils requis? Jul 01, 2025 am 12:05 AM

XmlNamespacesaRenotalways adressé, mais theyaressential incertaintesitations.1) thelpreventnameConflictsInxmlcumentscombiningElementsfrommultiplesources.2) theyCanBeomitsInSmall, auto-cologéDocuments.3) BestPracticescluclursingMeaningfulPrefixesa

Espace de noms XML: les erreurs les plus courantes Espace de noms XML: les erreurs les plus courantes Jun 27, 2025 am 01:00 AM

XMLNAMESPACESCANSEARRORRORRORS, BUSTHESECANBERESELBUSBYBOWINGSPECIFICSTEPS.1)

XML: Quelles sont les meilleures alternatives? XML: Quelles sont les meilleures alternatives? Jul 01, 2025 am 12:12 AM

JSON, YAML, Protocolbuffers, CSV, et TomlaresuitableAlternatiVestOxML.1) JSONISIDEALFORREADIBILITÉ ENFAIS SyntaxandSupportsComments.3) ProtocolBuffersExcelinhigh-PerformanceApplications.4) CSVisperfectforsImpledataExchange.5)

Pourquoi XML est toujours pertinent: explorer ses forces pour l'échange de données Pourquoi XML est toujours pertinent: explorer ses forces pour l'échange de données Jul 05, 2025 am 12:17 AM

XMLREMAINSRELEVANTDUETOITSITUSTRUCTURÉ AND-DESCRINGNATATURE.ITEXCELSInUSTRIESEQUIRING PRÉCISION ET CLARISTE SUPPORTSCUSSIQUETUSTAGSANDSEDSCHEMAS, ANDEGRATSEDATAVANAMES PACES, WHILITCANBEVERBOSEANDRESOURCE-ENVIRONNEMENT.

Règles de base XML: assurer le XML bien formé et valide Règles de base XML: assurer le XML bien formé et valide Jul 06, 2025 am 12:59 AM

XMLMUSTBEWELL-FORMEDANDVALID: 1) bien forméxmlfollowsbasicsyntacticrulesLikeProperlyNestedAndClosedTags.2) validxmladhestospecificrulesdefinedbydtdsorxmlSchema, assurant la dataingrity et la consommation de consommation de dons.

XML: Le codage affecte-t-il le statut bien formé? XML: Le codage affecte-t-il le statut bien formé? Jul 03, 2025 am 12:29 AM

XmLencodingDoOesAffect si l'établissement a été formé par rapport à un pantalon.1).

XML dans le développement de logiciels: cas d'utilisation et raisons d'adoption XML dans le développement de logiciels: cas d'utilisation et raisons d'adoption Jul 10, 2025 pm 12:14 PM

XmlischosenoveroTherformatsDuetOitsFlexibility, Human-Readabilité, androbustecosystem.1) itExcelsIndataExchangeandConfiguration.2) il est de la platform

Schéma XML: un guide complet pour valider les documents XML Schéma XML: un guide complet pour valider les documents XML Jun 24, 2025 am 12:03 AM

XMLSCHEMAUSCRUCIALFORVALIDIDATINGSMLDOCUMENTS a-t-il eu la consommation de dataentegrity et la consommation de systèmes.1)

See all articles