2008-08-22 19 views
7

Qual è il metodo migliore per analizzare più documenti XML personalizzati discreti con Java?Metodo migliore per analizzare vari documenti XML personalizzati in Java

+1

Mostraci quanto lontano hai - non lo scriveremo per te. Vuoi farlo con DOM, SAX o altro? Quale hai provato finora? Quali esercitazioni/documentazione hai guardato? – mdm

+0

Usa java dom api o sax per l'analisi xml. Dare una struttura xml più concreta. – 0xAX

+0

Prova mappatura [castor] (http://www.castor.org/xml-mapping.html). – nIKUNJ

risposta

5

Vorrei usare Stax per analizzare XML, è veloce e facile da usare. L'ho usato nel mio ultimo progetto per analizzare file XML fino a 24 MB. C'è una bella introduzione su java.net, che ti dice tutto ciò che devi sapere per iniziare.

4

In sostanza, ci sono due principali metodi di analisi XML in Java:

  • SAX, in cui si utilizza un handler solo afferrare ciò che si desidera nel vostro XML e fosso il resto
  • DOM, che analizza la tua file tutto e ti permette di afferrare tutti gli elementi in un modo più simile ad un albero.

Un altro metodo di analisi XML molto utile, anche se un po 'più recente di questi e incluso in JRE solo da Java6, è StAX. StAX è stato concepito come un metodo mediale tra l'albero basato sul DOM e l'approccio basato sugli eventi di SAX. È abbastanza simile a SAX nel fatto che l'analisi di documenti molto grandi è facile, ma in questo caso l'applicazione "estrae" le informazioni dal parser, anziché l'analisi "spingendo" gli eventi all'applicazione. È possibile trovare ulteriori spiegazioni su questo argomento here.

Quindi, in base a ciò che si desidera ottenere, è possibile utilizzare uno di questi approcci.

+0

copiato dalla mia risposta su un thread duplicato, per fornire più informazioni sui vari metodi –

2

Se è solo necessario analizzare, si consiglia di utilizzare la libreria XPath. Ecco una bella referenza: http://www.ibm.com/developerworks/library/x-javaxpathapi.html

Ma si potrebbe prendere in considerazione la possibilità di trasformare gli XML in oggetti e quindi il cielo è il limite. Per questo si può utilizzare XStream, questa è una grande biblioteca che io uso un sacco

2

Utilizzare il dom4j biblioteca

Prima di leggere il 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; 
    } 
} 

Quindi utilizzare XPath per raggiungere i valori di cui avete bisogno

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

Di seguito è riportato il codice di estrazione di alcuni valori utilizzando 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)); 
     } 
    } 
} 
Problemi correlati