J'extrais de gros blocs à partir de fichiers XML en utilisant XPath. Mes fichiers xml sont volumineux, ils proviennent de PubMed. Un exemple de mon type de fichier est:La meilleure façon d'extraire un gros bloc xml du grand fichier xml
ftp://ftp.ncbi.nlm.nih.gov/pubmed/baseline/medline17n0001.xml.gz
Ainsi, en utilisant
Node result = (Node)xPath.evaluate("PubmedArticleSet/PubmedArticle[MedlineCitation/PMID = "+PMIDtoSearch+"]", doc, XPathConstants.NODE);
Je reçois l'article avec PMIDtoSearch, de sorte que son parfait. Mais cela prend beaucoup de temps. Je dois le faire environ 800 000 fois, donc avec cette solution, il faudrait plus de deux mois. Certains blocs ont plus de 400 lignes et chaque fichier xml contient plus de 4 millions de lignes.
J'ai aussi essayé une solution comme cette fonction getElementsByTagName
mais cela prend presque le même temps.
Savez-vous comment améliorer la solution?
Merci.
VTD-XML est l'analyseur XML ultime pour cela, je vais contribuer un morceau de code pour vous bientôt. –
J'écrirais XQuery pour récupérer ce GZIP, le décompresser et le stocker dans exist-db. Ensuite, écrivez Xquery contre ce document stocké. –