- <bookshelf>
- <book id="001">
- <name>Scala</name>
- <author>John</author>
- </book>
- <book id="002">
- <name>XML</name>
- <author>Tom</author>
- </book>
- </bookshelf>
- import scala.xml._ // 导入scala.xml包
- val xmlFile = XML.load("books.xml") // 加载XML文件
- println(xmlFile getClass)
- println(xmlFile)
- println("书的数目: " + (xmlFile \\ "book").size)
- class scala.xml.Elem
- <bookshelf>
- <book id="001">
- <name>Scala</name>
- <author>John</author>
- </book>
- <book id="002">
- <name>XML</name>
- <author>Tom</author>
- </book>
- </bookshelf>
- 书的数目: 2
- // id与name的映射变量
- val bookMap =
- (Map[String, String]() /: (xmlFile \ "book")) {
- (map, bookNode) =>
- val id = (bookNode \ "@id").toString
- val name = (bookNode \ "name").text.toString
- map(id) = name
- }
- // 新的Elem对象
- val newXmlFile =
- <bookshelf>
- { bookMap.map{updateXmlFile} }
- </bookshelf>
- // 更新、修改原XML文件
- def updateXmlFile(elem: (String, String)) = {
- val (id, newName) = elem // 二元组
- <book id={id + "-01"}>
- <name>{newName + " Programming"}</name>
- </book>
- }
updateXmlFile
方法用于修改原来的
<book>…</book>
元素对中的
id
属性和
name
元素的值。
- XML.save("newXmlFile.xml", newXmlFile)
- println(XML.load("newXmlFile.xml"))
- <bookshelf>
- <book id="001-01">
- <name>Scala Programming</name>
- </book><book id="002-01">
- <name>XML Programming</name>
- </book>
- </bookshelf>