Scala XML
Posted yuanzam
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Scala XML相关的知识,希望对你有一定的参考价值。
XML
直接在代码中使用 XML 字面量
val doc: Elem = <html><head><title>Test</title></head><body>test</body></html> val items: NodeBuffer = <li>item1</li><li>item2</li><li>item1</li><li>item2</li>
Scala
中的Node
与DOM
不同,不包含父节点信息层级
操作
// 类 XPath val list = <dl><dt>Java</dt><dd>Gosling</dd><dt>Scala</dt><dd>Odersky</dd></dl> val languages = list \\ "dt" // 修改元素 val list = <ul><li>Fred</li><li>Wilma</li></ul> val list2 = list.copy(label = "ol") // 增加子元素 list.copy(child = list.child ++ <li>Another item</li>) // 增加属性 val image = <img src="hamster.jpg"/> val image2 = image % Attribute(null, "alt", "An image of a hamster", Null)
内嵌表达式,在XML中直接写 Scala 代码块
<ul><li>items(0)</li><li>items(1)</li></ul> <ul>for (i <- items) yield <li>i</li></ul> <img src=makeURL(fileName)/> // 注意不需要双引号 // 非常规类型 val js = <script><![CDATA[if (temp < 0) alert("Cold!")]]></script>
模式匹配
case <li>Text(item)</li> => item case <li>children @ _*</li> => for (c <- children) yield c
只能使用单个
Node
进行匹配加载、保存文件
import scala.xml.XML val root = XML.loadFile("myfile.xml") val root2 = XML.load(new FileInputStream("myfile.xml")) val root3 = XML.load(new InputStreamReader( new FileInputStream("myfile.xml"), "UTF-8")) val root4 = XML.load(new URL("http://horstmann.com/index.html")) XML.save("myfile.xml", root)
以上是关于Scala XML的主要内容,如果未能解决你的问题,请参考以下文章