请教scala 的xml语法

zestyzeng 2009-11-11

scala的xml处理功能非常强, 也容易使用,如下代码:

package com.test.xml

object XMLTest {
  val labPhoneBook = 
    <phonebook>
  		test
    </phonebook>;

  def main(args: Array[String]) =
    Console.println( labPhoneBook )
}


打印出
 
引用
<phonebook>
  test
    </phonebook>;


labPhoneBook 是一个 scala.xml.Elem对象。

我一直不明白, 他怎么知道
引用
<>....<>
是ELem对象, 是使用了scala中那些语法来实现, 哪位同志指导一下。谢谢。
fineqtbull 2009-11-11
<>..<>是Scala语言语法的一部分(终结符),就像{}()等符号一样。Scala语言的文法可以参看【Scala Language Specification】,里面专门有说明XML的章节。
引用

XmlExpr ::= XmlContent {Element}
Element ::= EmptyElemTag
| STag Content ETag

EmptyElemTag ::= ‘<’ Name {S Attribute} [S] ‘/>’
STag ::= ‘<’ Name {S Attribute} [S] ‘>’
ETag ::= ‘</’ Name [S] ’>’
Content ::= [CharData] {Content1 [CharData]}
Content1 ::= XmlContent
| Reference
| ScalaExpr
XmlContent ::= Element
| CDSect
| PI
| Comment
zestyzeng 2009-11-11
多谢指教。
查了一下《scala language specification》的1.5xml部分,找到答案了,
引用

Syntax:
( whitespace | ‘(’ | ‘{’ ) ‘<’ (XNameStart | ‘!’ | ‘?’)
XNameStart ::= ‘_’ | BaseChar | Ideographic (as inW3C XML, but without ‘:’

The scanner switches from XMLmode to Scalamode if either

简单的说就是 碰到 < 这个符号, 就从scala的解析转到xml的解析中。
elfer 2009-11-16
怎么感觉scala和actionscript这么像呢
Global site tag (gtag.js) - Google Analytics