Scala学习笔记 A2/L1篇 - XML处理 XML Pro

2018-08-22  本文已影响0人  hakase_nano

教材:快学Scala

chapter 16. XML处理 XML Processing

16.1 XML字面量

val doc = <html><head><title>Fred's Memoirs</title></head><body>...</body></html>
类型为scala.xml.Elem,表示一个XML元素
val items = <li>Fred</li><li>Wilma</li>
类型为scala.xml.NodeSeq,表示一系列的节点

16.2 XML节点

val elem = <a href="http://scala-lang.org">The <em>Scala</em> language</a>

elem.label // res131: String = a
elem.child // res132: Seq[scala.xml.Node] = ArrayBuffer(The , <em>Scala</em>,  language)
for (e <- elem.child) println(e)

16.3 元素属性

val elem = <a href="http://scala-lang.org">The <em>Scala</em> language</a>
val url = elem.attribute("href")  // Seq[Node]类型的Option对象 Some(http://scala-lang.org)
val url = elem.attributes("href") // Seq[Node]对象 http://scala-lang.org
val url = elem.attributes("href").text // String http://scala-lang.org

val image = <img alt="San José State University Logo"
src="http://www.sjsu.edu/publicaffairs/pics/sjsu_logo_color_web.jpg"/>
val alt = image.attribute("alt") // Some(ArrayBuffer(San Jos, &eacute;,  State University Logo))

for (attr <- elem.attributes) println(attr.key, attr.value.text) // 遍历属性

16.4 内嵌表达式

<ul><li>{items(0)}</li><li>{items(1)}</li></ul>
<ul>{for (i <- items) yield <li>{i}</li>}</ul>
<img src={makeURL(fileName)}/>
<img alt={if (description == "TODO" || description == null) None else Some(Text(description))} ... />

上一篇 下一篇

猜你喜欢

热点阅读