2017-08-29 4 views
1

Existe-t-il un moyen d'obtenir le nom de fichier dans la classe du gestionnaire d'analyseurs syntaxiques SAX? J'ai besoin d'écrire le nom du fichier avec le contenu de la balise dans un fichier texte.Comment obtenir le nom de fichier dans SAX Parser?

Aidez-nous s'il vous plaît.

EDIT: J'ai besoin ce

saxParser.parse ("Input.xml", saxHandler); dans saxHandler quand j'ai reçu la balise 'id', lisez la valeur et stockez la valeur avec le nom du fichier. Cela peut être une carte ou un objet.

+0

Quel fichier? Qui a dit qu'il y a un fichier? – shmosel

+0

J'ai lu quelque part qu'il ne lira pas le fichier. Je pourrais analyser des données à partir d'une variable de chaîne, mais je n'ai pas d'idée claire à ce sujet. N'y a-t-il aucun moyen d'obtenir le nom du fichier? – Rekha

+0

Si vous chargez le fichier, vous avez le nom du fichier. Si tout ce que vous avez est un analyseur, il n'y a pas grand-chose que vous puissiez faire. La source peut être n'importe quoi. – shmosel

Répondre

2

L'analyseur syntaxique SAX appellera généralement ContentHandler.setDocumentLocator() avant d'appeler d'autres méthodes de gestion d'événements. Le localisateur fourni peut être utilisé pour obtenir un SystemId, et si vous analysez un fichier, SystemId vous donnera généralement le nom du fichier source sous forme d'URI.

Quelques mises en garde:

  • L'analyseur SAX est encouragé à appeler cette méthode, mais il est pas obligé de le faire.

  • Dans certains cas, par ex. Si l'analyse est effectuée à partir d'un FileInputStream, le nom du fichier source (et donc SystemId) peut ne pas être connu de l'analyseur (en effet, le XML source ne provient pas nécessairement d'un fichier). Si le document source comprend plusieurs entités externes, SystemId peut alors changer au cours de l'analyse.