XML 解析
Scala标准库中内置了XML支持,XML相关类在包scala.xml
中。
XML节点类型
Node
是最基础的XML节点类型(抽象类)。
Node
类型是NodeSeq
的子类,而NodeSeq
继承自Seq[Node]
,用于记录节点的序列。
Node
类型定义了一系列用于获取节点信息的方法:
prefix
成员方法,用于获取当前节点的标签前缀。child
成员方法(抽象方法),用于获取子节点的序列。attributes
成员方法,用于获取当前节点的属性。label
成员方法(抽象方法),用于获取当前节点的标签名称。text
成员方法,用于获取当前节点的文本内容。
如下所示:
def prefix: String = null
def child: Seq[Node]
def attributes: MetaData = Null
def label: String
override def text: String = super.text
Node
类型的伴生对象中定义了提取器,可以用于提取节点中的标签名称、属性、子节点等内容:
def unapplySeq(n: Node) = Some((n.label, n.attributes, n.child))
Elem
类型继承于Node
类型,实现了Node
类型中的抽象内容。
有如下测试XML文件:
<!-- FileName: Example.xml -->
<root>
<node arg="arg_node">
<node1 arg="arg_node1">node1</node1>
<node1 argOne="node1_arg_one" argTwo="node1_arg_two">test_node1</node1>
</