El mejor método para analizar varios documentos XML personalizados en Java

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

  •  09-06-2019
  •  | 
  •  

Pregunta

¿Cuál es el mejor método para analizar múltiples documentos XML discretos y personalizados con Java?

¿Fue útil?

Solución

yo usaría estax para analizar XML, es rápido y fácil de usar.Lo he estado usando en mi último proyecto para analizar archivos XML de hasta 24 MB.Hay una buena introducción en java.net, que le indica todo lo que necesita saber para comenzar.

Otros consejos

Básicamente, tienes dos métodos principales de análisis XML en Java:

  • SAXÓFONO, donde se utiliza un manipulador tomar solo lo que quieres en tu XML y deshacerte del resto
  • DOMINGO, que analiza su archivo todo el tiempo y le permite capturar todos los elementos en una forma más parecida a un árbol.

Otro método de análisis XML muy útil, aunque un poco más reciente que estos, e incluido en el JRE sólo desde Java6, es StAX.StAX fue concebido como un método intermedio entre el enfoque basado en árboles de DOM y el enfoque basado en eventos de SAX.Es bastante similar a SAX en el hecho de que analizar documentos muy grandes es fácil, pero en este caso la aplicación "extrae" información del analizador, en lugar de que el análisis "envíe" eventos a la aplicación.Puedes encontrar más explicaciones sobre este tema. aquí.

Entonces, dependiendo de lo que quieras lograr, puedes utilizar uno de estos enfoques.

Si solo necesita analizar, le recomendaría utilizar la biblioteca XPath.Aquí hay una buena referencia: http://www.ibm.com/developerworks/library/x-javaxpathapi.html

Pero es posible que desee considerar convertir XML en objetos y entonces el cielo será el límite.Para eso puedes usar XStream, esta es una gran biblioteca que uso mucho

Utilizar el dom4j biblioteca

Primero lee el documento.

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;
    }
}

Luego use XPATH para llegar a los valores que necesita

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

A continuación se muestra el código para extraer algún valor usando 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));
        }   
    }
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top