Me gustaría leer en una respuesta XML y hacer un archivo temporal en memoria fuera del xml. Luego, me gustaría leer en el archivo para ver si existen ciertos elementos. Una vez hecho esto, me gustaría deshacerme del archivo temporal. Estoy familiarizado con la creación y lectura de archivos desde/hacia el sistema de archivos, ¿es posible no escribir y luego leer desde un archivo en la memoria solamente?En Java, ¿cómo creo un archivo temporal solo en memoria para analizar xml?
Respuesta
¿Por qué te molestaría crearlo como un "archivo" en la memoria? Solo guárdelo como una representación XML (ya sea usando JDOM, la API W3C DOM o lo que sea).
Será mucho más simple examinar en el formato que como un "archivo" en la memoria. Después de todo, si tuviera la forma serializada de la misma, como aparecería en el disco, entonces, para poder consultarla, básicamente tendría que volver a analizarla de todos modos.
Llamo a getInputStream() en una HttpURLConnection, ¿es posible pasar eso y realizar varias operaciones en él? – bmw0128
@ bmw0128: Dependiendo de su API XML, probablemente pueda analizar directamente desde la secuencia a una representación DOM, que luego puede consultar, etc. –
Estaba tratando de usar JAXB, pero el XML de respuesta será diferente en función de si la respuesta es un error o no Entonces, ahora estoy pensando en usar otra forma de leer el xml, y estoy pensando que necesitaré hacer una pasada para verificar la respuesta "buena", y si no, hacer otra pasada a través del xml para tener la culpa ... es por eso que creo que necesito tener el xml en la memoria para que pueda hacer dos pasadas, ¿suena bien? – bmw0128
¿Realmente necesita ser un archivo? Por lo general, eso se abstacta.
Por ejemplo, si está utilizando un escritor o lector basado en secuencias, puede usar ByteArrayOutputStream
y ByteArrayInputStream
y ajustar sus secuencias/escritores/lectores en torno a eso. Rara vez necesitaría burlarse de un archivo; si lo hace, es probable que no estés tan abstemio como podrías en tu diseño.
ByteArrayOutputStream baos = new ByteArrayOutputStream();
Writer w = new OutputStreamWriter(baos);
w.write(...);
byte[] bytes = baos.toByteArray();
Del mismo modo, un ByteBuffer
puede envolver un archivo, sino también simplemente una matriz de bytes en la memoria.
Parece que ni siquiera es necesario serializarlo en absoluto, como señala Jon.
No veo la necesidad de crear un archivo temporal solo para comprobar que existan ciertos elementos. La mayoría de los analizadores XML le permiten leer directamente desde algún flujo de entrada. Todo lo que necesita es convertir la cadena de respuesta XML en un flujo de entrada, luego alimentar a algunos analizador XML para realizar su cheque: -
// converting string to input stream
InputStream is = new ByteArrayInputStream(myString.getBytes(charset));
- 1. ¿Cómo creo un nombre de archivo temporal en Erlang?
- 2. Cómo analizar el archivo XML en RapidXML
- 3. analizar un archivo XML en Qt
- 4. Cómo analizar XML mal formado en Java?
- 5. ¿Cómo creo un archivo XML Intellisense para mi DLL?
- 6. ¿Cómo puedo modificar un archivo zip solo en la memoria?
- 7. Cómo analizar atributos xml con jQuery solo?
- 8. ¿Cómo crear un archivo temporal (para escribir en) en C#?
- 9. ¿Puede Python xml ElementTree analizar un archivo xml muy grande?
- 10. cómo pasar un archivo xml a lxml para analizar?
- 11. Haskell analizar el archivo xml grande con poca memoria
- 12. analizar una cadena xml en java?
- 13. Perl, cómo analizar el archivo XML, xpath
- 14. Analizar archivo XML local en Android
- 15. ¿Cómo creo un archivo temporal con nombre en Windows en Python?
- 16. Cómo analizar la fragmentación de memoria en Java?
- 17. Guardar un archivo temporal
- 18. Java: ¿formas de analizar XML en E4X?
- 19. Cómo analizar eficientemente documentos XML concatenados desde un archivo
- 20. ¿Cómo creo un identificador en memoria en Haskell?
- 21. Escribir en un archivo XML en Java
- 22. Manipular un archivo en la memoria con PHP (sin crear un archivo temporal en el disco)
- 23. En Perl, ¿cómo creo de manera segura una FIFO temporal?
- 24. Cómo analizar XML en php?
- 25. Usando XPath para analizar un documento XML
- 26. Cómo analizar y modificar un archivo HTML en Java
- 27. analizar un archivo XML con un esquema DTD en una ruta relativa
- 28. ¿Cómo buscar y analizar un archivo XML con AppleScript?
- 29. Cómo analizar XML a un objeto Java usando XStream
- 30. ¿Cómo creo un archivo vacío en emacs?
lo que realmente necesita un archivo real ** ** en la memoria (como " en un tmpfs "), ¿o las secuencias en memoria serían suficientes? – Boris