2010-11-26 28 views
0

Je travaille sur une application de distribution Java Web Start. Il utilise une configuration XML qui définit comment servir les ressources aux clients. Certaines ressources sont générées lors des requêtes. Je suis en train de traiter le fichier de configuration principal avec un gestionnaire SAXParser personnalisé.Comment capturer un noeud XML pendant l'analyse avec SAX

Dans le fichier de configuration, j'aimerais ajouter une partie de définition XML incorporée dans laquelle le noeud racine du document XML servible est un noeud enfant.

Par exemple:

<Resources> 
    <!-- other resource definitions --> 
    <EmbeddedXMLResource mapsForRequest="embedded.xml"> 
    <HiThere> 
     <ThisIsAnEmbeddedXMLDocument/> 
    </HiThere> 
    </EmbeddedXMLResource> 
    <!-- ... --> 
</Resources> 

Je me demande s'il n'y a aucune façon de lire le nœud <HiThere> à un document DOM ou du moins capturer le contenu intérieur de <EmbeddedXMLResource> dans une chaîne à sauter le traitement de SAX? J'ai pensé à mettre le contenu incorporé dans une section CDATA. De cette façon, je peux lire le XML embarqué comme un nœud de texte mais je perds la coloration syntaxique dans les éditeurs sur les nœuds incorporés.

+0

SAX est efficace en termes de mémoire pour les documents volumineux, mais pour un fichier de configuration c'est trop, et une API beaucoup plus difficile à utiliser que d'autres. –

+0

Je dois quand même parcourir tout le XML parce que je construis différentes classes à partir des nœuds. Je pensais qu'un analyseur SAX est meilleur pour cela. – NagyI

+0

Avez-vous regardé vtd-xml? il semble un bien meilleur ajustement –

Répondre

0

Peut-être ...

  1. On startElement HiThere obtenir la position de départ dans le fichier avec le localisateur
  2. Sur endElement HiThere obtenir la position finale aussi.
  3. Ouvrez la ressource XML avec un autre lecteur et extrayez la partie correspondante sous forme de chaîne, et ainsi de suite.

Drôle. Pourquoi utilisez-vous un analyseur SAX pour commencer?

+0

Je n'ai pas trouvé une solution plus facile, alors j'accepte votre réponse. N'a pas essayé cependant, réécrit pour utiliser l'analyseur DOM à la place. Merci quand même. – NagyI