2011-07-30 17 views
5

puedo analizar XML bien con SAXParserFactory en Java, pero en algunos archivos, hay atributos presentes algunos no minúscula, como linear3D="0.5" etc.Parse XML con SAX en Java, sin distinción de mayúsculas y minúsculas.

me gustaría hacer algún modo

attributes.getValue(attr) 

caso -insensible, por lo que attributes.getValue("linear3d") devuelve "0.5".

Una solución sería leer primero el archivo como una cadena, convertir a minúsculas, y luego analizar, , ya que no hay ambigüedad al hacer esto en este tipo de xml. Sin embargo, ¿se puede hacer esto de forma más sencilla, agregando un indicador a la fábrica o similar?

+0

Usted no debe cambiar su modelo. XML distingue entre mayúsculas y minúsculas. No vayas en contra de las convenciones. –

+0

Bueno, desafortunadamente, estoy tratando de analizar archivos .flame, que casi cumple con los estándares .xml. No tengo control sobre su sintaxis, ya que están creados por un software de terceros. –

+0

¿Qué significa eso? Usted no tiene ninguna garantía de que siempre será linear3d o linear3D? –

Respuesta

4

En lugar de convertir todo el archivo en minúsculas, el siguiente enfoque es mejor. Esto itera a través de todos los atributos de la etiqueta seleccionada y la obliga a ignorar el caso.

Dentro de la implementaion de DefaultHandler escribir el siguiente método

private String getValueIgnoreCase(Attributes attributes, String qName){ 
    for(int i = 0; i < attributes.getLength(); i++){ 
     String qn = attributes.getQName(i); 
     if(qn.equalsIgnoreCase(qName)){ 
      return attributes.getValue(i); 
     } 
    } 
    return null; 
} 
Cuestiones relacionadas