¿Cuál es una alternativa a este XPath //div[@id='foo']
en GPath? En general, ¿dónde puedo encontrar esta documentación?¿Cómo encontrar elemento por valor de atributo en GPath?
Respuesta
Aquí es el fragmento correspondiente:
def node = new XmlSlurper().parseText(...)
def foo = node.depthFirst().findAll { it.name() == 'div' && [email protected] == 'foo'}
Algunos otros enlaces es posible que desee leer:
El comentario anterior dio a todos eso es obligatorio: suponiendo que su documento ha sido absorbido por xml
, usted quiere
def foo = xml.path.to.div.find{[email protected] == 'foo'}
para encontrar un solo resultado. O findAll
para encontrar todos los resultados.
'//' en XPath significa que no conozco la ruta exacta a 'div' – yegor256
bien. luego el póster anterior le dio la solución: - use 'xml.depthFirst(). find {it.name() == 'div' && id. @ id == 'foo}' – winstaan74
@ winstaan74 ¿Cuál es la expresión para obtener todo elementos con un nombre de atributo específico? – raffian
lo que necesita es la siguiente:
def root = new XmlSlurper().parseText(<locOfXmlFileYouAreParsing>.toURL().text)
def foundNode = root.'**'.find{ [email protected] == "foo" }
su doble * que le permitirá encontrar sin saber el camino. Al menos así es como lo hago.
¿Cómo se encuentra la primera instancia de un nodo por nombre de elemento, suponiendo que hay más de uno? – raffian
'xml. '**'. Find {it.name() == 'elementName'}' Y ese será el primero. –
para imitar la expresión // div [@ id = 'foo'] lo más cercano que se puede hacer con un GPath es:
def xml = new XmlParser().parseText(text)
xml.'**'.div.findAll { [email protected]=="foo" }
la '**' es más o menos lo mismo que '//'en tu XPath.
xml.'**'.div
dará todos los nodos de tipo div en cualquier nivel.
Posteriormente filtrado con findAll() con el cierre dado se obtiene una lista de nodos como lo hace en el caso de XPath
- 1. Encontrar elemento específico basado en un atributo
- 2. Obtener lista elemento por atributo en Python
- 3. jQuery 1.4.4: ¿Cómo encontrar un elemento basado en su valor de atributo de datos?
- 4. Encontrar un valor enum por su Descripción Atributo
- 5. Encontrar un elemento de DOM basado en un valor de atributo
- 6. Usando variables en XmlSlurper's GPath
- 7. jquery v1.3.2 buscar elemento por atributo
- 8. ActiveRecord, Buscar por valor del atributo anidado
- 9. Obtener un valor de atributo en el elemento xml
- 10. Agrupación de nodos XML por valor de atributo en XSLT
- 11. por jquery, establecer como opción de html-seleccionar elemento seleccionado atributo por texto, no valor
- 12. Pregunta de Groovy JSON/GPath
- 13. elemento Seleccione HTML por valor de la propiedad CSS en atributo de estilo
- 14. ¿Cómo encontrar el índice del elemento con un valor mínimo?
- 15. Buscar XElement por valor de atributo
- 16. jQuery filtro por un valor de atributo
- 17. LINQ: ¿Eliminar elemento de XML según el valor del atributo?
- 18. Encontrar elementos por atributo usando XDocument
- 19. ¿Hay alguna forma de obtener XML de elemento por atributo?
- 20. Inicializar Knockout observable de valor de atributo elemento
- 21. Encontrar el elemento de una matriz de Ruby con el valor máximo para un atributo en particular
- 22. C# - Xml Elemento con atributo y valor de nodo
- 23. XPath para encontrar más cercana elemento antecesor que contiene un elemento que tiene un atributo con un cierto valor
- 24. JQuery: agregando valor de atributo a cada elemento
- 25. Cómo encontrar elemento en Vista por coordenadas x, y Android
- 26. Valor de atributo predeterminado JAXB
- 27. cómo obtener valor de rel clic elemento
- 28. Obtener un valor de un atributo por XPath y HtmlAgilityPack
- 29. Diferencia entre valor y valor de elemento
- 30. Obtener atributo del elemento hijo
Es maravilloso, no GPath. Necesito una sola expresión GPath. – yegor256
No estoy muy seguro de lo que quiere decir, ya que GPath usa principalmente sintaxis maravillosa con los siguientes símbolos adicionales: "..." que devuelve el padre "*" que devuelve todos los hijos "**" que actúan como profundidad primer ciclo "@" que se usa para acceder a una propiedad del acceso nodal normal. –
Estoy buscando algo como '" ..div {it. @ Id == 'foo'} "', pero no funciona ... – yegor256