美文网首页
Scala学习笔记 A2/L1篇 - XML处理 XML Pro

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

作者: hakase_nano | 来源:发表于2018-08-22 17:01 被阅读0次

教材:快学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节点

  • Node类是所有XML节点类型的祖先,最重要的两个子类是TextElem
  • NodeSeqSeq[Node]的子类型
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)
  • NodeBuffer 用于构建节点序列,是ArrayBuffer[Node]的子类

16.3 元素属性

  • 属性的键和值用attribute属性,产生一个MetaData对象
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))} ... />

相关文章

网友评论

      本文标题:Scala学习笔记 A2/L1篇 - XML处理 XML Pro

      本文链接:https://www.haomeiwen.com/subject/pypyiftx.html