Elixir和Erlang记录模式匹配

时间:2013-06-27 14:30:19

标签: xml erlang elixir

如何在Elixir中进行这种记录模式匹配?

[ #xmlText{value=Rank} ]  = xmerl_xpath:string("//SalesRank/text()", Xml),

额外奖励:重写来自Dave Thomas在Elixir的博客中的this示例。


更新

发现我的问题是什么。你必须使用

defrecord :xmlText, Record.extract(:xmlText, from_lib: 'xmerl/include/xmerl.hrl')

按照规定here将记录从XMerL lib提取到您的程序中。然后.value语法起作用,行可以写成如下:

rank = Enum.first(xmerl_xpath.string('//SalesRank/text()', xml)).value

1 个答案:

答案 0 :(得分:2)

查看问题以获得答案。 (这是未答复列表的顶部)

否则我在调查期间找到了{elixir-lang.org上的blog post

对于最常用的记录:

defrecord :xmlElement, Record.extract(:xmlElement, from_lib: "xmerl/include/xmerl.hrl")
defrecord :xmlText, Record.extract(:xmlText, from_lib: "xmerl/include/xmerl.hrl")