Je voudrais analyser de gros fichiers XML et lire dans un nœud complet à la fois à partir de Java. Les fichiers sont trop volumineux pour être placés dans un arbre. Je voudrais utiliser un analyseur de tirage si possible, car il semble être plus facile à programmer. Compte tenu des données XML suivantes
Au lieu d'avoir à vérifier chaque événement en utilisant l'analyseur StAX Je voudrais chaque appel à hasNext ou une fonction similaire à renvoyer un objet contenant les informations complètes sur un nœud d'enregistrement. Lorsque j'utilise Perl XML :: LibXML :: Reader me permet de le faire en utilisant sa méthode de lecture, donc je cherche un équivalent en Java.Lecture de gros fichiers XML un nœud à la fois en Java avec un analyseur de pull?
Répondre
Commons Digester est vraiment bon pour ce type de problème. Il vous permet de configurer des règles d'analyse dans lesquelles, lorsque l'analyseur rencontre certaines étiquettes, il effectue une action (par exemple, appelle une méthode usine pour créer un objet). Vous n'avez pas besoin d'écrire de code d'analyse, ce qui rend le développement rapide et léger.
Ci-dessous est un modèle simple d'exemple, vous pouvez utiliser:
<pattern value="myConfigFile/foos/foo">
<factory-create-rule classname="FooFactory"/>
<set-next-rule methodname="processFoo" paramtype="com.foo.Foo"/>
</pattern>
Lorsque l'analyseur rencontre la balise « foo » il appellera createObject(Attributes)
sur FooFactory
, qui va créer un objet Foo
. L'analyseur appelle ensuite le processFoo
sur l'objet situé en haut de la pile Digester
(vous devez généralement appuyer sur la pile avant de commencer l'analyse). Vous pouvez donc implémenter processFoo
pour ajouter ces objets à une collection, ou si votre fichier est trop gros, il suffit de traiter chaque objet à mesure qu'il arrive et de le jeter.
Essayez XML Pull Parser
- 1. Emacs travaillant avec de gros fichiers XML
- 2. Analyse de gros fichiers pseudo-xml en python
- 3. Vous cherchez un analyseur CSS en Java
- 4. Ajouter un document XML à un nœud XML en C#?
- 5. La lecture de très gros fichiers dans PHP
- 6. git pull - changements de Java
- 7. Fractionner un gros fichier XML en Python
- 8. Ajouter un attribut à un nœud xml avec nant
- 9. Ajout d'attributs à un nœud XML
- 10. Comment mettre à jour un nœud XML?
- 11. Fusion de gros fichiers en C#
- 12. Publication de gros fichiers
- 13. Comment sélectionner un nœud XML en fonction de son contenu?
- 14. Comment obtenir un nœud XML à partir de XDocument
- 15. XML interrogeant un nœud particulier à partir de C#
- 16. Convertir un nœud DOM ou Document en XML en JavaScript
- 17. Analyseur MSXML en Java
- 18. lecture Xml dans un DataGrid en C#
- 19. Écrire un fichier XML (en utilisant XStream) sur un système de fichiers en Java
- 20. Où placer de gros fichiers statiques dans un projet Tomcat?
- 21. Computing MD5SUM de gros fichiers en C#
- 22. Comment trouver un nœud XML spécifique?
- 23. devrais-je inclure un tas de fichiers d'avoir un gros fichier avec conditions?
- 24. Ajouter un préfixe au nœud racine XML - Mise en œuvre de la suggestion de Scott Hanselman?
- 25. Lecture de fichiers dans un projet .NET
- 26. Lecture et écriture de XML à l'aide de JUST Java 1.5 (ou antérieur)
- 27. Analyseur utilisant RegEx et XML, en C#
- 28. C# Lecture de fichiers 'Zip' avec FileStream
- 29. télécharger de gros fichiers vidéo sur l'iPhone
- 30. Analyseur syntaxique SAX en Java
je l'utiliser, mais il ne ressemble pas à elle est activement maintenue. – Jared