Scala:akka http 解组 xml 字符串到大小写 类
Scala: akka http unmarshal xml strings to case classes
我有来自第三方 API 的简单 XML 回复。
假设它看起来像
<items>
<item name="name1"/>
<item name="name2"/>
<item name="name3"/>
</items>
有案例类
case class Items(children: List[Item])
case class Item(name: String)
我如何编写 unmarshaller 以隐式使用它将与这样的代码一起工作:
Unmarshal(myXmlString).to[Items].map ...
或更好
Unmarshal(myXmlString).to[List[Item]].map ...
我可以在不定义任何显式访问 XML 的解组函数的情况下执行此操作吗?我已经拥有的数据看起来足够具有声明性,无需额外的样板即可进行解组。
scala-xml 不提供任何反序列化器来补充您的自定义对象。
如果需求像示例中提到的那样简单,您可以尝试以下操作:
scala> val itemsString = "<items><item name='name1'/><item name='name2'/><item name='name3'/></items>"
scala> val itemsXml = scala.xml.XML.loadString(itemsString)
scala> val items = Items(( itemsXml \ "@name").toList.map(( x=> Item(x.toString)) )) │
我有来自第三方 API 的简单 XML 回复。
假设它看起来像
<items>
<item name="name1"/>
<item name="name2"/>
<item name="name3"/>
</items>
有案例类
case class Items(children: List[Item])
case class Item(name: String)
我如何编写 unmarshaller 以隐式使用它将与这样的代码一起工作:
Unmarshal(myXmlString).to[Items].map ...
或更好
Unmarshal(myXmlString).to[List[Item]].map ...
我可以在不定义任何显式访问 XML 的解组函数的情况下执行此操作吗?我已经拥有的数据看起来足够具有声明性,无需额外的样板即可进行解组。
scala-xml 不提供任何反序列化器来补充您的自定义对象。 如果需求像示例中提到的那样简单,您可以尝试以下操作:
scala> val itemsString = "<items><item name='name1'/><item name='name2'/><item name='name3'/></items>"
scala> val itemsXml = scala.xml.XML.loadString(itemsString)
scala> val items = Items(( itemsXml \ "@name").toList.map(( x=> Item(x.toString)) )) │