Scala对XML文档的处理是如此简洁,代码摘自动物世界-马来貘那本,稍做改动,如下:
import scala.xml._
object XMLhandler {
val someXML=
<sammich>
<bread>wheat</bread>
<meat>salami</meat>
<condiments>
<condiment expired="true">mayo</condiment>
<condiment expired="false">mustard</condiment>
</condiments>
</sammich>
def main(args:Array[String]):Unit={
someXML match{
case <sammich>{ingredients @ _*}</sammich>=>{
for(<condiments>{ conds @ _*}</condiments> <- ingredients; cond<-conds){
if((cond \ "@expired").text=="true")
println("1: "+cond.text+" has expired!!")
}
}
} //end match
for(condiment<- (someXML \\ "condiment")){
if((condiment \ "@expired").text=="true")
println("2: "+condiment.text+" has expired!!")
}
}
}
output:
1: mayo has expired!!
2: mayo has expired!!
说明:
很显然这里使用了模式匹配,case里的ingredients直接提取了XML片段的<condiments>元素(包括自身和其内部元素);
第一个for循环里conds提取了两个<condiment>元素,然后对每个<condiment>元素借助cond遍历,
然后在if里使用投影函数(projection function)反斜线(\)找到expired属性,这个属性类型是scala.xml.NodeSeq,
调用这个类型的text方法取得属性值("true","false"),然后打印过期的调料。
第二个for循环使用另一投影函数双反斜线(\\)直接提取深层子元素<condiment>,然后判断、打印。
两个投影函数 \ 与 \\ 称作姊妹函数,我认为前者一个反斜线,叫做“影一”,后者叫做“影二”吧,这样也好记;
这两个函数的区别在于“影一”不进行深度查找,只对兄弟元素、姐妹属性查找,算是广度查找;后者则进行深度查找。
分享到:
相关推荐
赠送jar包:scala-xml_2.11-1.0.1.jar; 赠送原API文档:scala-xml_2.11-1.0.1-javadoc.jar; 赠送源代码:scala-xml_2.11-1.0.1-sources.jar; 赠送Maven依赖信息文件:scala-xml_2.11-1.0.1.pom; 包含翻译后的API...
赠送jar包:scala-xml_2.11-1.0.4.jar; 赠送原API文档:scala-xml_2.11-1.0.4-javadoc.jar; 赠送源代码:scala-xml_2.11-1.0.4-sources.jar; 赠送Maven依赖信息文件:scala-xml_2.11-1.0.4.pom; 包含翻译后的API...
赠送jar包:scala-xml_2.12-1.0.6.jar; 赠送原API文档:scala-xml_2.12-1.0.6-javadoc.jar; 赠送源代码:scala-xml_2.12-1.0.6-sources.jar; 赠送Maven依赖信息文件:scala-xml_2.12-1.0.6.pom; 包含翻译后的API...
赠送jar包:scala-xml_2.11-1.0.5.jar; 赠送原API文档:scala-xml_2.11-1.0.5-javadoc.jar; 赠送源代码:scala-xml_2.11-1.0.5-sources.jar; 赠送Maven依赖信息文件:scala-xml_2.11-1.0.5.pom; 包含翻译后的API...
赠送jar包:scala-xml_2.11-1.0.5.jar; 赠送原API文档:scala-xml_2.11-1.0.5-javadoc.jar; 赠送源代码:scala-xml_2.11-1.0.5-sources.jar; 赠送Maven依赖信息文件:scala-xml_2.11-1.0.5.pom; 包含翻译后的API...
《在Scala中进行编程:全面的分步指南》(Programming in Scala: A comprehensive step-by-step guide)是一本关于Scala编程语言的权威教材。这本书的独特之处在于它的共同作者是Scala语言的设计师Martin Odersky,...
赠送jar包:scala-xml_2.11-1.0.1.jar; 赠送原API文档:scala-xml_2.11-1.0.1-javadoc.jar; 赠送源代码:scala-xml_2.11-1.0.1-sources.jar; 赠送Maven依赖信息文件:scala-xml_2.11-1.0.1.pom; 包含翻译后的API...
Scala:Applied Machine Learning by Pascal Bugnion English | 23 Feb. 2017 | ISBN-13: 9781787126640 | 1843 Pages | EPUB/PDF (conv) | 33.15 MB Leverage the power of Scala and master the art of building, ...
"Scala: Guide for Data Science Professionals (Learning Path)" ASIN: B06XCJVY21, eISBN: 1787282856 | 2017 | True PDF | 1100 pages | 15 MB Scala will be a valuable tool to have on hand during your data...
scala xml parse Scala xml解析全解教程 学习用scala处理解析xml
赠送jar包:scala-xml_2.11-1.0.4.jar; 赠送原API文档:scala-xml_2.11-1.0.4-javadoc.jar; 赠送源代码:scala-xml_2.11-1.0.4-sources.jar; 赠送Maven依赖信息文件:scala-xml_2.11-1.0.4.pom; 包含翻译后的API...
赠送jar包:scala-xml_2.12-1.0.6.jar; 赠送原API文档:scala-xml_2.12-1.0.6-javadoc.jar; 赠送源代码:scala-xml_2.12-1.0.6-sources.jar; 赠送Maven依赖信息文件:scala-xml_2.12-1.0.6.pom; 包含翻译后的API...
Scala-XML是Scala编程语言中的一个标准库,用于处理XML数据。这个库为开发者提供了方便、类型安全的方式来创建、解析和操作XML文档。在Scala中,XML被当作一种第一类的值,这意味着它可以像其他数据类型一样进行操作...
【课程大纲】第1讲-Spark的前世今生第2讲-课程介绍、特色与价值第3讲-Scala编程:基础语法第4讲-Scala编程:条件控制与循环第5讲-Scala编程:函数入门第6讲-Scala编程:函数入门之默认参数和带名参数第7讲-Scala编程...
"CrossCuttingConcern_Scala" 可能就是这样一个项目,它展示了如何在 Scala 中利用第三方库如 Scalaz 或 Aspects4s 来实践 AOP。 Scalaz 是一个强大的 Scala 库,提供了许多函数式编程工具,包括类型类、Monads 和...
Programming Scala: Tackle Multi-Core Complexity on the Java Virtual Machine by Venkat Subramaniam Scala is an exciting, modern, multi-paradigm language for the JVM. You can use it to write ...
在"scala: scala代码"的描述中,我们可以推测这是一个关于Scala编程语言的学习资源或者项目源代码。 1. **面向对象编程**:Scala是基于Java虚拟机(JVM)的语言,因此它兼容Java的所有类库。它支持类、对象和继承等...
Testcontainers-scala 用于Scala包装器,允许使用容器进行功能/... 行动中的Testcontainers-scala: ://dimafeng.com/2016/08/01/testcontainers-selenium/松弛设置对于scalatest用户: libraryDependencies + = " ...
将org.plotly-scala::plotly-almond:0.8.1依赖项添加到笔记本中。 (最新版本:)然后初始化plotly-scala,并像使用它一样使用它 import $ivy . `org.plotly-scala::plotly-almond:0.8.1` import plotly . _ import