La meilleure méthode pour analyser divers personnalisée de documents XML en Java

StackOverflow https://stackoverflow.com/questions/23106

  •  09-06-2019
  •  | 
  •  

Question

Quelle est la meilleure méthode pour analyser plusieurs, discret, personnalisée de documents XML avec Java?

Était-ce utile?

La solution

Je voudrais utiliser Stax pour parser du XML, c'est rapide et facile à utiliser.Je l'ai utilisé sur mon dernier projet pour analyser des fichiers XML jusqu'à 24MO.Il y a une belle introduction sur java.net, qui vous dit tout ce que vous devez savoir pour commencer.

Autres conseils

En gros, vous avez deux principales méthodes d'analyse XML en Java :

  • SAX, où vous utilisez un gestionnaire à seulement saisir ce que vous voulez dans votre XML et abandonner le reste
  • DOM, qui traite votre dossier tout au long, et permet de saisir tous les éléments dans un plus d'arbre.

Un autre très utile d'analyse XML méthode, quoique un peu plus récentes que celles-ci, et inclus dans le JRE seulement depuis Java6, est StAX.StAX a été conçu comme un médial de méthode entre les arbres, des DOM et de l'événement approche à base de SAX.Il est tout à fait similaire à SAX dans le fait que l'analyse des documents très volumineux est facile, mais dans ce cas, l'application "tire" des informations à partir de l'analyseur, à la place de l'analyse de la "pousser" des événements de l'application.Vous pouvez trouver plus d'explications sur ce sujet ici.

Ainsi, en fonction de ce que vous voulez atteindre, vous pouvez utiliser l'une de ces approches.

Vous souhaitez utiliser org.xml.sax.XMLReader (http://docs.oracle.com/javase/7/docs/api/org/xml/sax/XMLReader.html).

Si vous avez seulement besoin d'analyser ensuite je vous conseille d'utiliser XPath de la bibliothèque.Voici une belle référence: http://www.ibm.com/developerworks/library/x-javaxpathapi.html

Mais vous souhaitez peut-être envisager de transformer XMLs à des objets et puis le ciel est la limite.Pour cela, vous pouvez utiliser XStream, c'est une grande bibliothèque que j'utilise beaucoup

L'utilisation de la dom4j bibliothèque

D'abord lire le document

import java.net.URL;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.io.SAXReader;

public class Foo {

    public Document parse(URL url) throws DocumentException {
        SAXReader reader = new SAXReader();
        Document document = reader.read(url);
        return document;
    }
}

Ensuite, l'utilisation de XPATH pour obtenir les valeurs dont vous avez besoin

public void get_author(Document document) {
    Node node = document.selectSingleNode( "//AppealRequestProcessRequest/author" );
    String author = node.getText();
    return author;
}

Ci-dessous est le code de l'extraction de la valeur de la valeur à l'aide de vtd-xml.

import com.ximpleware.*;

public class extractValue{
    public static void  main(String s[]) throws VTDException, IOException{
        VTDGen vg = new VTDGen();
        if (!vg.parseFile("input.xml", false));
        VTDNav vn = vg.getNav();
        AutoPilot ap = new AutoPilot(vn);
        ap.selectXPath("/aa/bb[name='k1']/value");
        int i=0;
        while ((i=ap.evalXPath())!=-1){
            System.out.println(" value ===>"+vn.toString(i));
        }   
    }
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top