Vi el siguiente ejemplo en Nabble, donde el objetivo era devolver todos los nodos que contienen un atributo con una identificación de X que contiene un valor Y:Buscar todos los nodos que tengan un atributo que coincida con un cierto valor con scala
//find all nodes with an attribute "class" that contains the value "test"
val xml = XML.loadString("""<div>
<span class="test">hello</span>
<div class="test"><p>hello</p></div>
</div>""")
def attributeEquals(name: String, value: String)(node: Node) =
{
node.attribute(name).filter(_==value).isDefined
}
val testResults = (xml \\ "_").filter(attributeEquals("class","test"))
//prints: ArrayBuffer(
//<span class="test">hello</span>,
//<div class="test"><p>hello</p></div>
//)
println("testResults: " + testResults)
como una extensión a este ¿cómo se haga lo siguiente: Encontrar todos los nodos que contienen cualquier atributo que contiene un valor de Y:
//find all nodes with any attribute that contains the value "test"
val xml = XML.loadString("""<div>
<span class="test">hello</span>
<div id="test"><p>hello</p></div>
<random any="test"/></div>""")
//should return: ArrayBuffer(
//<span class="test">hello</span>,
//<div id="test"><p>hello</p></div>,
//<random any="test"/>)
estaba pensando que podría utilizar una _ este modo:
val testResults = (xml \\ "_").filter(attributeEquals("_","test"))
Pero no funciona. Sé que puedo usar la coincidencia de patrones, pero solo quería ver si podía hacer algo de magia con el filtrado.
Saludos - Ed
encontré lenguaje XPath es más simple https://github.com/nrinaudo/kantan.xpath y es tiempo de compilación seguro en Scala –