Scala XML

这篇博客介绍了如何在Scala代码中直接使用XML字面量,探讨了XML的层级结构和操作方法,包括内嵌表达式以及使用模式匹配进行XML处理。此外,还提到了加载和保存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 中的 NodeDOM 不同,不包含父节点信息

  • 层级

    file

  • 操作

    file

    // 类 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)
    
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值