Scala XML 概述

作者: 蔡洪宇 | 来源:发表于2018-04-04 16:58 被阅读28次

本节仅为概述, 稍后会推一篇 Scala-XML 的详细说明

节点

Scala 提供了对 XML 字面量的内建支持, 我们可以很容易的在程序代码中生成 XML 片段

  val doc =  // doc: Elem
    <a>
      1
      <b>
        2
      </b>
    </a>
  println(doc.label)
}

Output:

a

序列

单个节点相当于长度为 1 的序列
如果通过编程方式构建节点序列,可以使用 NodeBuffer, 它是 ArrayBuffer[Node] 的子类
NodeBuffer 是一个 Seq[Node] , 可以被隐式转换为 NodeSeq, 一旦完成,最好别再修改它, 因为 XML 节点序列 应该是不可变的

获取属性

通过方法

要获取某个元素的属性, 可以使用 Atrributes 属性, 它将产生一个matedata 的对象, 这个对象几乎等同于从一个属性键到属性值的映射,你可以用 () 操作符访问给定键的值;

val item =
  <a href="http://salca-lang.org">
    the
    <em>scala</em>
    language
  </a>
item.attribute("href")
// res0: Option[Seq[scala.xml.Node]] = Some(http://salca-lang.org)
item.attributes
// res1: scala.xml.MetaData =  href="http://salca-lang.org"

通过查询

使用 \() \\() 方法可以获取属性, 在属性名字符串前加上 @ 表示查询属性, 如 \("@num") 表示查询 num 属性。

val item =
  <a href="http://salca-lang.org">
    the
    <em href="http://www.bing.com">scala</em>
    language
  </a>
item \("@href")
// res: scala.xml.NodeSeq = http://salca-lang.org
item \@("href")
// res: String = http://salca-lang.org

注:

  1. 在使用 \() 方法查找属性时, 查找的的范围不是子节点的属性, 而是当前节点的属性。
  2. 可以使用 \@() 方法直接获取当前节点属性的值(Not NodeSeq), 使用属性名作为参数, 无需再添加 @

查询节点

通过名称

\() 以及 \\() 方法签名类似, 接收节点名称作为参数(String 类型), 返回节点序列(NodeSeq 类型)。

  • \() 方法返回当前节点下一级子节点中指定名称节点的序列。
  • \\() 方法返回当前节点所有子节点中指定名称节点的序列。

节点查询支持使用模式匹配的方式。
使用模式匹配方式查询节点时,匹配表达式中的节点标签不能带有属性。

遍历节点

Node 类型的成员 child 是子节点的序列(Seq[Node] 类型)

val item =
  <a href="http://salca-lang.org">
    <em href="http://www.bing.com"></em>
  </a>
item.child.length
// res0: Int = 3 (Why 3?)

参考资料

Scala XML解析库
scala.XML处理

相关文章

  • Scala XML 概述

    本节仅为概述, 稍后会推一篇 Scala-XML 的详细说明 节点 Scala 提供了对 XML 字面量的内建支持...

  • Scala WordActor第二种写法

    WordCountDemo.scala SendFile.scala pom.xml 程序输出

  • Scala Actor实现异步WordCount

    ActorWordCountDemo.scala Messages.scala pom.xml 程序输出如下,

  • Scala XML

    XML 直接在代码中使用 XML 字面量val doc: Elem = Test test val i...

  • Scala 概述

    Scala名称是scalable language,表明可扩展性较强 面向对象编程和函数式编程的结合 Scala代...

  • Scala概述

    Scala是可扩展语言的缩写,是一种混合功能编程语言。 它由Martin Odersky创建。 Scala顺利整合...

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

    教材:快学Scala chapter 16. XML处理 XML Processing 16.1 XML字面量 v...

  • XML概述

    什么是XML XML是指可扩展标记语言(EXtensible Markup Language),与HTML类似。设...

  • 第1章、 Scala语言概述

    第1章、 Scala语言概述 ==知识结构== Scala这门课主要分为以下几个阶段进行学习。 1、Scala语言...

  • 【Java】【XML】XML概述

    XML概述 XML:eXtensible Markup Language 可扩展标记语言 version="1.0...

网友评论

    本文标题:Scala XML 概述

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