在Scala中编组/解组XML
我正在考虑在
Scala和XML之间编组/解组数据的各种方法,我有兴趣获得社区反馈(最好基于第一手知识/经验).
我们目前正在使用JAXB,这是很好的,但我希望有一个纯粹的Scala解决方案.我正在考虑以下方法: >使用Scala的内置XML设施:Scala-> XML很容易,但我猜测另一个方向会相当痛苦.另一方面,这种方法支持任意翻译逻辑. 问题: 您对我上市的方法/图书有什么经验? 编辑: 在我自己对这个问题的回答中,我添加了一些关于我早期对腌菜机组合器的印象的笔记,但是对于深入了解各种方法的人的反馈,我仍然很感兴趣.我希望的是一个有点全面的比较,这将有助于开发人员根据自己的需要选择正确的方法. 解决方法
我建议使用Scala的内置XML功能.我刚刚实现了一个文档结构的反序列化,如下所示:
val bodyXML = <body><segment uri="foo"><segment uri="bar" /></segment></body> 请注意,段可以彼此嵌套. 实施细分如下: case class Segment(uri: String,children: Seq[Segment]) 为了反序列化XML,您可以这样做: val mySegments = topLevelSegments(bodyXML) …和topLevelSegments的实现只是几行代码.注意递归,它挖掘了XML结构: def topLevelSegments(bodyXML: Node): Seq[Segment] = (bodyXML "segment") map { nodeToSegment } def nodeToSegment = (n: Node) => Segment((n "@uri")(0) text,childrenOf(n)) def childrenOf(n: Node): Seq[Segment] = (n "segment") map { nodeToSegment } 希望有帮助. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |