Scala Lift:如何按属性和值选择NodeSeq中的节点?

Scala Lift:如何按属性和值选择NodeSeq中的节点?,scala,select,attributes,lift,nodes,Scala,Select,Attributes,Lift,Nodes,我有一个NodeSeq对象,想要选择一个用属性标记的给定节点。例如,假设NodeSeq中有一个标记… 我试着用NodeSeq上的方法\\以及filter来选择in 假设seq是我的NodeSeq对象 seq\\\“div”起作用,但这会选择所有元素 seq.filter(u.attribute(“id”).equals(“content”))根本不选择任何节点,结果列表为空 如何选择此节点 试试看 scala> var x= <b> | <h id="bla"/>

我有一个NodeSeq对象,想要选择一个用属性标记的给定节点。例如,假设NodeSeq中有一个标记

我试着用NodeSeq上的方法
\\
以及filter来选择in

假设seq是我的NodeSeq对象

seq\\\“div”
起作用,但这会选择所有
元素

seq.filter(u.attribute(“id”).equals(“content”))
根本不选择任何节点,结果列表为空

如何选择此节点

试试看

scala> var x= <b>
 | <h id="bla"/>
 | <h id="blub"/>
 | </b>

x \\ "h" filter (h=>(h \ "@id" toString) == "bla")
scala>var x=
| 
| 
| 
x\\“h”过滤器(h=>(h\“@id”toString)=“bla”)

这应该行得通。

或者,您可以尝试以下方法:

seq.filter(_.attribute("id").exists(_.text.equals("content")))

谢谢,这很好用。:-)我想知道,为什么它不能与\\“属性”(“id”).equals(“内容”)方法一起工作。如果您尝试x\\“h”map(\\“@id”)res1:scala.collection.immutable.Seq[scala.xml.NodeSeq]=List(bla,blub)类型是NodeSeq,因此它不等于字符串;)这可能更好:x\\“h”映射(\“@id”text)res2:scala.collection.immutable.Seq[String]=List(bla,blub)