आप या \\
विधियों के साथ NodeSeq
पर कुछ भी नहीं कर सकते हैं। लेकिन आप एक नया \*
विधि (ध्यान दें कमी या अंतरिक्ष चरित्र) साथ NodeSeq विस्तार कर सकते हैं दलाल-your-पुस्तकालय पैटर्न के अनुसार,:
import xml.{NodeSeq, Elem}
class ChildSelectable(ns: NodeSeq) {
def \* = ns flatMap { _ match {
case e:Elem => e.child
case _ => NodeSeq.Empty
} }
}
implicit def nodeSeqIsChildSelectable(xml: NodeSeq) = new ChildSelectable(xml)
आरईपीएल में, यह तो मुझे देता है:
scala> val xml = <a><b><c>xxx</c></b></a>
xml: scala.xml.Elem = <a><b><c>xxx</c></b></a>
scala> xml \*
res7: scala.xml.NodeSeq = NodeSeq(<b><c>xxx</c></b>)
scala> xml \ "b" \*
res8: scala.xml.NodeSeq = NodeSeq(<c>xxx</c>)
scala> xml \ "b" \ "c" \*
res9: scala.xml.NodeSeq = NodeSeq(xxx)
स्रोत
2011-01-07 12:06:07
गु स्वीकार किए गए उत्तर से बेहतर है। एक नई विधि लिखने की आवश्यकता के बिना, "_" 'वास्तव में क्या पूछा गया था। बनाए रखने के लिए कम कोड, अगले कोड को आपके कोड को देखने में भ्रमित करने के लिए कम गैर मानक सिंटैक्स। – rumtscho
इस आयनसर को अधिक महत्व न दें। स्कैला-एक्सएमएल टूटा हुआ है। Https://github.com/lihaoyi/scalatags या https://github.com/chris-twiner/scalesXml जैसे कुछ का उपयोग करें –