programación - manejo de archivos xml en java
El mejor método para analizar varios documentos XML personalizados en Java (6)
Usaría Stax para analizar XML, es rápido y fácil de usar. Lo he estado utilizando en mi último proyecto para analizar archivos XML de hasta 24 MB. Hay una buena introducción en java.net , que le dice todo lo que necesita saber para comenzar.
¿Cuál es el mejor método para analizar documentos XML múltiples, discretos y personalizados con Java?
Básicamente, tienes dos métodos principales de análisis XML en Java:
- SAX , donde utiliza un controlador para capturar solo lo que desea en su XML y deshacerse del resto
- DOM , que analiza su archivo todo el tiempo, y le permite tomar todos los elementos de una manera más similar 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 solo desde Java6, es StAX . StAX se concibió como un método medial entre el DOM basado en árbol y el enfoque basado en eventos de SAX. Es bastante similar a SAX en el hecho de que el análisis de documentos muy grandes es fácil, pero en este caso la aplicación "extrae" información del analizador sintáctico, en lugar de analizar los eventos de "empuje" de la aplicación. Puedes encontrar más explicaciones sobre este tema aquí .
Entonces, dependiendo de lo que quiera lograr, puede usar uno de estos enfoques.
Si solo necesita analizar, le recomendaría usar 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 luego el cielo es el límite. Para eso puedes usar XStream , esta es una gran biblioteca que uso mucho
Use la biblioteca dom4j
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 usa XPATH para llegar a los valores que necesitas
public void get_author(Document document) {
Node node = document.selectSingleNode( "//AppealRequestProcessRequest/author" );
String author = node.getText();
return author;
}
org.xml.sax.XMLReader
usar org.xml.sax.XMLReader
( http://docs.oracle.com/javase/7/docs/api/org/xml/sax/XMLReader.html ).
A continuación se muestra el código para extraer algún valor de 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));
}
}
}