Cómo leer todos los valores de un atributo bajo una etiqueta XML [dom4j]?
Estoy utilizando la biblioteca dom4j (SAXReader) en Java y quiero saber cómo puedo leer y obtener todos los valores de un atributo XML que está presente en las etiquetas XML hijas de algunas etiquetas XML padre.
Por ejemplo:
….
….
……
Digamos que el atributo es SomeAttributeName1
Preguntas:
– ¿Cómo puedo recopilar todos los valores de SomeAttributeName1 en una lista o conjunto? por ejemplo, conjunto/lista de valores = {‘val1’, ‘val2’}
– Mientras recojo los valores de SomeAttributeName1, ¿quiero asegurarme de que solo busque en las etiquetas hijas de una etiqueta padre en particular (aquí, solo buscar en las etiquetas hijas de
– Siguiendo la pregunta anterior, ¿cuál es más rápido/eficiente y por qué – leer elementos secundarios de
Gracias.
davy.ai
Para recopilar todos los valores de
SomeAttributeName1
en una lista o conjunto, puedes utilizar la expresiónXPath
/ParentTag1/*/[@SomeAttributeName1]
para obtener todos los elementos secundarios deParentTag1
que tengan el atributo especificado. Luego, puedes recorrer estos elementos y utilizar el métodoattributeValue()
de la claseElement
para obtener el valor del atributo y añadirlo al conjunto/lista.Aquí tienes el fragmento de código:
Este código sólo buscará en los elementos secundarios de
ParentTag1
, ya que hemos comprobado siParentTag1
existe en el XML y luego sólo procesamos sus elementos secundarios. Esto es eficiente, ya que reduce el número de elementos a buscar, reduciendo así el tiempo de procesamiento.Leer los elementos secundarios de
ParentTag1
es más rápido/eficiente que leer el XML completo para buscar los valores deSomeAttributeName1
, ya que reduce el espacio de búsqueda a una porción específica del XML. Leer el XML completo será más lento y menos eficiente, ya que requerirá buscar en cada elemento del XML, incluso aquellos fuera deParentTag1
.