¿Cómo dividir dos xmls consecutivos en un archivo? (Java / Android)

Nada de lo que propongo aquí se prueba, pero estas son las rutas que creo que tomaría.

Si se espera que la longitud de la respuesta sea pequeña, personalmente probablemente solo opte por colocar la respuesta XML concatenada en una, Stringcomo usted sugiere, y luego usar Stringmétodos estándar para extraer los documentos XML individuales o , como sugirió, eliminar el XML cadenas de declaración y envolver todo el lote con un par de elementos raíz. Dependería de si desea alimentar su analizador XML con un solo documento o múltiples. No lo he tratado BasicHttpResponseen años, pero creo que puede obtener una InputStreamde la entidad de respuesta usando mBasicHttpResponse.getEntity().getContent(), y luego usar una de las muchas maneras posibles para obtener una Stringde eso InputStream.

Si, por otro lado, espero tratar con datos bastante largos o si la entidad de respuesta puede contener un número indeterminado de documentos XML concatenados, entonces pensaría en envolver lo obtenido InputStreamcon una costumbre InputStreamo Readerque realice (a) despojándose de las declaraciones y (b) inserción de nuevos elementos raíz. Hay alguien más en SO que hizo una pregunta muy similar al problema que enfrenta aquí, excepto que no tenía las declaraciones para tratar. Mirando la respuesta del usuario 656449, vemos una sugerencia de cómo envolver un InputStreamelemento raíz ficticio antes de pasarlo al analizador SAX:

(Copiado descaradamente de la pregunta / respuesta SO referenciada):

SAXParserFactory saxFactory = SAXParserFactory.newInstance();
SAXParser parser = saxFactory.newSAXParser();

parser.parse(
    new SequenceInputStream(
        Collections.enumeration(Arrays.asList(
        new InputStream[] {
            new ByteArrayInputStream("<dummy>".getBytes()),
            new FileInputStream(file),//bogus xml
            new ByteArrayInputStream("</dummy>".getBytes()),
        }))
    ), 
    new DefaultHandler()
);

Pero, adicionalmente, en esta situación, reemplazaría el FileInputStreamtipo con algún tipo de CustomFilterFileInputStreamcreación propia para eliminar las líneas de declaración. Su CustomFilterFileInputStreamenvolvería el InputStreamobtenido de su BasicHttpResponsey luego el uso de SequenceInputStreamagrega las nuevas etiquetas raíz.

Ese es el tipo de dirección que creo que debería tomar si realmente tiene que aceptar los datos XML de esta manera, y si espera manejar grandes cantidades de ellos en una sola respuesta.

Respuesta 1

Estoy desarrollando una herramienta que consulta las actualizaciones del sistema externo y esta consulta se basa en el valor del tiempo de actualización que se representa como una representación de fecha interna de Excel, respectivamente, a los segundos ...

Estoy generando un archivo PDF usando com.itextpdf.text. * El siguiente es mi código que crea el archivo PDF con título y encabezado resaltados y filas, lo que quería hacer es crear un archivo PDF con imagen en ...

¿Alguien sabe la razón por la que Flux.onErrorContinue argumentos como el siguiente tipo: public final Flux <T> onErrorContinue (BiConsumer <Throwable, Object> errorConsumer) {...} en su lugar ...

¿Hay alguna forma de que pueda obtener la dirección IP original del cliente que viene al servidor desde org.springframework.web.context.request.WebRequest?