动态地将属性列表应用于xml元素

时间:2015-01-28 13:47:18

标签: xml scala

说我有一个属性元组列表:

val list = List(("name", "myname"), ("id", "1"))

然后我将如何动态生成XML元素:

<elem name='myname' id='1'/>

1 个答案:

答案 0 :(得分:0)

在Scala中使用XML的标准接口不是很方便。属性存储在链表xml.MetaData中(实际上不是List或任何类型的集合)。因此,您必须折叠列表才能生成此MetaData。在那之后,我认为使用它制作元素的最简单方法是使用%运算符。构造元素的另一种方法是将此MetaData传递给xml.Elem构造函数。

val list = List(("name", "myname"), ("id", "1"))
val attributeList = list.foldLeft(xml.Null: xml.MetaData) {
  case (metadata, (key, value)) => xml.Attribute(None, key, xml.Text(value), metadata) 
}
val elem = <elem/> % attributeList