xml - Scala 填充模板的方式?

标签 xml templates scala

在 Ruby 中我可以这样:

string=<<EOTEMPLATE
<root>
  <hello>
     <to>%s</to>
     <message>welcome mr %s</message>
  </hello>
  ...
</root>
EOTEMPLATE

当我想“渲染”模板时,我会这样做:

rendered = string % ["me@mail.com","Anderson"]

它会用数组中传递的值填充模板。除了使用 Java 的 String.format 之外,在 Scala 中有没有办法做到这一点?如果我用 Scala 写这个:

val myStr = <root>
<hello>
<to>{address}</to>
<message>{message}</message>
</hello>
</root>

生成的 XML 将已经被“填充”。有什么方法可以“模板化”XML?

最佳答案

使用函数和 Scala 的 XML:

 val tmpl = {(address: String, message: String) =>
  <root>
    <hello>
      <to>{address}</to>
      <message>{message}</message>
    </hello>
  </root>
  }

和:

tmpl("me@mail.com","Anderson")

一些糖:

def tmpl(f: Product => Elem) = new {
   def %(args: Product) = f(args)
}

val t = tmpl{case (address, message) => 
  <root>
    <hello>
      <to>{address}</to>
      <message>{message}</message>
    </hello>
  </root>
}

t % ("me@mail.com","Anderson")

关于xml - Scala 填充模板的方式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5770550/

相关文章:

javascript - Meteor.js 模板回显不起作用

c++ - 错误 C2782 : 'const _Ty &std::min(const _Ty &,const _Ty &)' : template parameter '_Ty' is ambiguous

bash - 从脚本执行 SBT 命令

c++ - 实现嵌套在模板类中的类的成员函数

java - 从 Executor 创建 ExecutorService

scala - 命令式类型与普通的旧子类型

python - 如何在Python中添加包含 ":"的xml标签

c# - 如何指定不需要按顺序排列的必需 xml 子元素列表?

java - 无法恢复 Activity

xml - 是否有程序可以从 XML 模式文件生成 Rust 结构?