2010-12-09 40 views
0

Je développe une application socket et mon application doit recevoir le fichier xml sur le socket. La taille des fichiers xml reçus varie de 1k à 100k. Je pense maintenant à stocker les données que j'ai reçues dans un fichier temporaire d'abord, puis le passer à l'analyseur xml. Je ne suis pas sûr que ce soit une bonne façon de le faire.Traitement des données reçues de la socket

Une autre question est si je veux faire comme mentionné ci-dessus, dois-je passer l'objet de fichier ou le chemin du fichier à l'analyseur xml?

Merci à l'avance,

Cordialement

Répondre

2

Envoyez-le directement à l'analyseur. C'est ce que font les navigateurs. L'ajout d'un fichier temporaire vous coûte du temps et de l'espace sans réel bénéfice.

+0

Merci EJP. Si InputStream à partir du socket contient des données précédentes avant les données XML, est-il correct d'ignorer ces données en effectuant des appels à la méthode read() avant de les passer à l'analyseur? –

+0

Bien sûr. Ou même sauter() si vous connaissez la longueur exacte. – EJP

0

Pensez-vous qu'il travaillerait à mettre un BufferedReader autour de tout flux d'entrée que vous avez? Il ne le mettrait pas dans un fichier temporaire, mais il vous laisserait accrocher à ces données. Vous pouvez définir n'importe quelle taille BufferedReader dont vous avez besoin.

Avez-vous écrit votre analyseur XML? Si ce n'est pas le cas, que va-t-il accepter comme paramètre? Si vous l'avez écrit, demandez-vous sur l'efficacité. C'est-à-dire quel objet, chemin ou fichier, votre analyseur devrait-il demander pour être le plus efficace?

+0

Bonjour Raven, Je n'écris pas mon propre analyseur XML et l'API que j'utilise prend InputStream comme paramètre à analyser. –

0

Vous n'avez pas besoin de stocker les données du socket dans un fichier. Lisez simplement le DataInputStream dans un tableau d'octets et vous pourrez ensuite faire ce dont vous avez besoin. Par exemple. Si nécessaire, créez un String avec l'entrée xml pour alimenter l'analyseur. (Je suppose que les prises TCP).
S'il existe des données précédentes, vous les ignorez pour alimenter les données xml réelles vers l'analyseur.