¿Cómo verificar si el atributo XML existe usando el analizador SAX?

Le di un archivo XML y una etiqueta contiene varios atributos. Sin embargo, uno de ellos a veces se salta. Exampe:

<data>
    <item attribute0="value 0" attribute1="value 1" attribute2="value 2">
    <item attribute0="value 0" attribute1="value 1">
    <item attribute0="value 0" attribute1="value 1" attribute2="value 2">
</data>

Estoy usando el analizador SAX para manejar este archivo y en un startElementmétodo obtengo todos los valores del atributo, pero antes de obtenerlo attribute2necesito verificar si existe.

Respuesta 1

Puede verificar si existe un atributo utilizando getIndex (nombre) o getIndex (uri, localName) . Si devuelve -1, entonces el atributo no existe. Ver getIndex javadoc .

Respuesta: 2

Mi respuesta se basa en la respuesta de Javanator, usando el analizador SAX.

Puede verificar si el atributo está vacío:

if (item.getAttribute("attribute2").isEmpty()) { }

public boolean isEmpty ()

Devuelve: verdadero si length () es 0, de lo contrario es falso

Una forma alternativa de preguntar si existe un atributo específico es:

if (item.hasAttribute("attribute2")) { }

boolean hasAttribute (nombre de cadena)

Devuelve verdadero cuando un atributo con un nombre dado se especifica en este elemento o tiene un valor predeterminado, falso en caso contrario.

Respuesta: 3

¿hay alguna propiedad CSS que establezca el radio del círculo? Intuitivamente he intentado "fx-radius" o "fx-size" pero no es así. No quiero establecer cada radio de círculo por separado en el archivo fxml; <...

Estamos migrando nuestro proyecto a Java 9 y obtengo esta excepción al usar geotools: java.lang.IllegalArgumentException: org.opengis.referencing.datum.DatumFactory no es una clase ImageIO SPI ...

Necesito comenzar mi clase de Java como un proceso en segundo plano sin usar jsvc. ¿Cómo podría hacer esto?

Estoy tratando de usar NamedParameterJdbcTemplate para recuperar un valor decimal (4,2) de la base de datos. Si hubiera sido un valor int, podría haber hecho NamedParameterJdbcTemplate.queryForInt () pero no encuentro un ...