81 votes

Comment lire et écrire des fichiers XML ?

Je dois lire et écrire à partir et à destination d'un XML dossier. Quel est le moyen le plus simple de lire et d'écrire des fichiers XML en utilisant Java ?

0 votes

Analyse syntaxique partielle de xml efficace en mémoire via StAX : stackoverflow.com/questions/52614082/

0voto

JavaDragon Points 361

SAX fonctionne différemment avec un DOM l'analyseur ne charge aucun XML dans la mémoire, ni créer une représentation objet de l'ensemble du document. XML document. Au lieu de cela, le SAX fonction de rappel de l'analyseur syntaxique org.xml.sax.helpers.DefaultHandler pour informer les clients de la XML la structure du document.

SAX L'analyseur est plus rapide et utilise moins de mémoire que DOM parser. Voir ci-dessous SAX méthodes de rappel :

startDocument() et endDocument() - Méthode appelée au début et à la fin d'un document XML. startElement() et endElement() - Méthode appelée au début et à la fin d'un élément de document. characters() - Méthode appelée avec le contenu du texte entre les balises de début et de fin d'un élément de document XML.

  1. Fichier XML

Créez un simple fichier XML.

<?xml version="1.0"?>
<company>
    <staff>
        <firstname>yong</firstname>
        <lastname>mook kim</lastname>
        <nickname>mkyong</nickname>
        <salary>100000</salary>
    </staff>
    <staff>
        <firstname>low</firstname>
        <lastname>yin fong</lastname>
        <nickname>fong fong</nickname>
        <salary>200000</salary>
    </staff>
</company>
  1. Analyseur XML :

Fichier Java Utilisez l'analyseur SAX pour analyser le fichier XML.

import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;

public class ReadXMLFile {
    public static void main(String argv[]) {

        try {
            SAXParserFactory factory = SAXParserFactory.newInstance();
            SAXParser saxParser = factory.newSAXParser();

            DefaultHandler handler = new DefaultHandler() {
                boolean bfname = false;
                boolean blname = false;
                boolean bnname = false;
                boolean bsalary = false;

                public void startElement(String uri, String localName,String qName, 
                            Attributes attributes) throws SAXException {

                    System.out.println("Start Element :" + qName);

                    if (qName.equalsIgnoreCase("FIRSTNAME")) {
                        bfname = true;
                    }

                    if (qName.equalsIgnoreCase("LASTNAME")) {
                        blname = true;
                    }

                    if (qName.equalsIgnoreCase("NICKNAME")) {
                        bnname = true;
                    }

                    if (qName.equalsIgnoreCase("SALARY")) {
                        bsalary = true;
                    }

                }

                public void endElement(String uri, String localName,
                    String qName) throws SAXException {

                    System.out.println("End Element :" + qName);

                }

                public void characters(char ch[], int start, int length) throws SAXException {

                    if (bfname) {
                        System.out.println("First Name : " + new String(ch, start, length));
                        bfname = false;
                    }

                    if (blname) {
                        System.out.println("Last Name : " + new String(ch, start, length));
                        blname = false;
                    }

                    if (bnname) {
                        System.out.println("Nick Name : " + new String(ch, start, length));
                        bnname = false;
                    }

                    if (bsalary) {
                        System.out.println("Salary : " + new String(ch, start, length));
                        bsalary = false;
                    }

                }

            };

            saxParser.parse("c:\\file.xml", handler);

        } catch (Exception e) {
           e.printStackTrace();
        }

    }

}

Résultat

Élément de départ : entreprise
Élément de départ : personnel
Élément de départ : prénom
Prénom : yong
Fin de l'élément :firstname
Élément de départ :lastname
Nom de famille : mook kim
Fin de l'élément :lastname
Début de l'élément :nickname
Pseudonyme : mkyong
Fin de l'élément :nickname
et ainsi de suite...

Source(MyKong) - http://www.mkyong.com/java/how-to-read-xml-file-in-java-sax-parser/

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X