validar validaciones validacion texto solo números numeros letras hacer especiales ejemplos como caracteres campos java android xml xml-parsing sax

validaciones - validar letras números y caracteres especiales en java



Los caracteres especiales en el nodo de Texto no son analizados por el método de caracteres() de SAX (2)

Aquí, el parámetro ''char [] ch'' se supone que capta toda la línea Deals & Dealmakers: fusiones y adquisiciones de tecnología, medios y comunicaciones, pero solo obtiene "ofertas".

Usted parece estar asumiendo que obtendrá todo el texto en una sola llamada. No hay garantía de eso. Sospecho que el método de los characters se llamará varias veces para el mismo nodo de texto, que es válido para el analizador. Debes asegurarte de que tu código maneje eso.

De la documentación :

Los analizadores SAX pueden devolver todos los datos de caracteres contiguos en un solo fragmento, o pueden dividirlo en varios fragmentos; sin embargo, todos los personajes en un solo evento deben provenir de la misma entidad externa para que el Localizador brinde información útil.

Puede haber una función que puede configurar para asegurarse de obtener todos los datos de una vez; No estoy seguro.

Estoy haciendo una aplicación para Android en la que estoy analizando un XML usando el analizador SAX.

En el XML hay una etiqueta:

<title>Deals &amp; Dealmakers: Technology, media and communications M&amp;A </title>

Como puede ver, contiene algunas cartas especiales como &amp;

El problema es que estoy usando el método implícito de SAX:

@Override public void characters(char[] ch, int start, int length) throws SAXException{}

Aquí, se supone que el parámetro ''char [] ch'' capta toda la línea Deals &amp; Dealmakers: Technology, media and communications M&amp;A Deals &amp; Dealmakers: Technology, media and communications M&amp;A Pero solo está obteniendo "Ofertas".

¿Cómo puedo resolver este problema?

Un problema podría ser debido a la forma en que paso el XML al analizador SAX. ¿Debo cambiar la codificación o el formato?

Actualmente, paso el XML como InputStream y uso el siguiente código:

HttpResponse httpResponse = utils.sendRequestAndGetHTTPResponse(URL); if (httpResponse.getStatusLine().getStatusCode() == 200) { HttpEntity entity = httpResponse.getEntity(); InputStream in = entity.getContent(); parseResponse(in); } // Inside parseResponse method: try { SAXParserFactory spf = SAXParserFactory.newInstance(); SAXParser sp = spf.newSAXParser(); XMLReader xmlReader = sp.getXMLReader(); MyHandler handler = new MyHandler(); xmlReader.setContentHandler(handler); xmlReader.parse(new InputSource(in)); } catch (Exception e) { }


Supongo que UTF-8 es exactamente el problema. En el archivo, el análisis de la codificación se define como ISO-8859-1

así que intente seguir el código:

InputSource is = new InputSource(yourInputStream); is.setEncoding("ISO-8859-1"); xmlReader.parse(is);

espero que esto ayude.