thS*_*oft 7 xml serialization scala
看到Scala的强大功能,我想知道是否可以使用内置的Scala语言特性和库(例如,没有XMLEncoder,XStream或JAXB)将任意对象图序列化和反序列化为XML.不幸的是,我还没有找到这样的解决方案.你有什么建议吗?
我不知道"是否可以使用内置的Scala语言特性和库对任意对象图进行序列化和反序列化,"但是由于Scala中有一些对XML的本机支持,我会提到它们.更多细节可以在Ch.Scala中编程 26,称为使用XML:
本章介绍Scala对XML的支持.在讨论了一般的半结构化数据之后,它展示了Scala中用于操作XML的基本功能:如何使用XML文字创建节点,如何将XML保存和加载到文件,以及如何使用查询方法和模式匹配拆分XML节点.
为了快速总结这一章,我将引用一些关键点.
所以你可以这样写:
val foo = <a> {3 + 4} </a>
Run Code Online (Sandbox Code Playgroud)
以上评估为scala.xml.Elem = <a> 7 </a>.
\使用标记名称进行调用.\\而不是\运算符来执行"深度搜索"并查看子子元素等.这本书有一个抽象类的序列化和反序列化的例子,但它是手写的:
abstract class CCTherm {
val description: String
val yearMade: Int
def toXML =
<cctherm>
<description>{description}</description>
<yearMade>{yearMade}</yearMade>
</cctherm>
def fromXML(node: scala.xml.Node): CCTherm =
new CCTherm {
val description = (node \ "description").text
val yearMade = (node \ "yearMade").text.toInt
}
}
Run Code Online (Sandbox Code Playgroud)
还可以在名为scala.xml的草稿中找到更多信息.