Où puis-je trouver une comparaison détaillée des cadres XML Java?

j'essaie de choisir un cadre de traitement XML pour mes projets Java, et je suis perdu dans les noms.. XOM, JDOM, etc. Où puis-je trouver une comparaison détaillée de tous les cadres XML Java populaires?

26
demandé sur Aravind R. Yarram 2010-10-04 16:45:31

2 réponses

comme L'a souligné Blaise coller avec les normes. Mais il y a plusieurs normes créées au cours de la période Pour résoudre différents problèmes/usecas. Lequel choisir dépend entièrement de vos exigences. J'espère que la comparaison ci-dessous peut vous aider à choisir la bonne.

maintenant il y a deux choses vous devez choisir. API et les implémentations de L'API (Il ya beaucoup de)

API

SAX: Pros

  • basée sur les événements
  • la mémoire de l'efficacité
  • plus rapide que DOM
  • supporte la validation de schéma

SAX: Cons

  • aucun modèle d'objet, vous devez puiser dans les événements et de créer votre auto
  • simple partie du xml et ne peut que aller de l'avant
  • lecture seule api
  • pas de charge de xpath
  • un peu plus difficile à utiliser

DOM: Pros

  • modèle d'objet en mémoire
  • préserve de l'élément de commande
  • bi-directionnel
  • api de lecture et d'écriture
  • MANIPULATION xml
  • simple à utiliser
  • supporte la validation de schéma

DOM: Cons

  • carte mémoire pour les documents XML de plus grande taille (généralement utilisé pour les documents XML moins de 10 mo)
  • plus lent
  • modèle générique, c'est-à-dire que vous travaillez avec des Noeuds

Stax: Pros

  • Best of SAX and DOM i.e. Ease of DOM et l'efficacité de SAX
  • la mémoire de l'efficacité
  • modèle Pull
  • api de lecture et d'écriture
  • appuie la sous-partie
  • peut lire plusieurs documents en même temps en un seul fil
  • le traitement parallèle du XML est plus facile

Stax: Cons

  • comme je me souviens, pas sûr s'ils ont ajouté ça maintenant)
  • ne peut aller de l'avant comme sax
  • no xml MANIPULATION

JAXB: Pros

  • vous permet D'accéder et de traiter XML données sans avoir à connaître XML
  • bi-directionnel
  • plus économe en mémoire que DOM
  • SAX et DOM sont des parsers génériques où comme JAXB crée un analyseur spécifique your XML Schmea
  • conversion de données: JAXB peut convertir xml pour les types java
  • supporte la MANIPULATION XML via un objet API

JAXB: Cons

  • ne peut parse valid XML

Trax: Pour la transformation de données XML à partir de 1 forme à une autre forme à l'aide de XSLT

implémentations

SAX, DOM, Stax, JAXB ne sont que des spécifications. Il existe de nombreux open source et les mises en œuvre commerciales de ces spécifications . La plupart du temps, vous pouvez simplement vous en tenir à ce qui est fourni avec JDK ou votre serveur d'application. Mais parfois vous devez utiliser une implémentation différente de celle fournie par défaut. Et c'est là que vous pouvez apprécier l'api JAXP wrapper . JAXP vous permet de passer des implémentations par la configuration sans avoir à modifier votre code. Il fournit également une api parser/spec indépendante pour l'analyse, la transformation, la validation et la recherche de documents XML.

de la Performance et d'autres comparaisons de différentes implémentations


maintenant les normes sont bonnes, mais de temps en temps vous rencontrez cette usecase folle où vous devez supporter l'analyse de document XML qui est 100 gigaoctets de taille ou vous avez besoin ultra rapide traitement de XML (peut-être que vous êtes en train d'implémenter une puce parser XML) et c'est quand vous avez besoin de dumper les normes et de chercher une manière différente de faire les choses. Ses propos à l'aide de la bon outil pour le bon travail! Et c'est là que je vous suggère de jeter un oeil à vtd-xml

pendant les premiers jours de Sax et DOM, les gens voulaient des API plus simples que celles fournies par l'un d'eux. JDOM , dom4j , XmlBeans , JiBX , Castor sont ceux que je connais qui sont devenus populaires.

59
répondu Aravind R. Yarram 2017-05-23 12:10:39

@ Pangea

JAXB vs DOM et SAX

JAXB n'est pas directement comparable à DOM et SAX. Le Java DOM et le SAX les API d'analyse sont des API de niveau inférieur pour analyser des documents XML, tandis que JAXB (Java API for XML Binding) est une API de niveau supérieur pour convertir XML les éléments et les attributs d'un objet Java de la hiérarchie (et vice versa). Les implémentations de JAXB utiliseront très probablement un DOM ou un analyseur SAX dans les coulisses pour effectuer l'analyse réelle des données D'entrée XML.

2
répondu 小色狼 2017-05-23 12:18:09