La meilleure méthode pour analyser divers personnalisée de documents XML en Java
Question
Quelle est la meilleure méthode pour analyser plusieurs, discret, personnalisée de documents XML avec Java?
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));
}
}
}