2013-06-27 68 views
14

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

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

奖励:重写this来自Dave Thomas的Elixir博客的例子。


更新

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

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

从XMerL lib中记录提取到你的程序的规定here。然后.value语法的作品和行可以写如下:

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

亨利,请把它变成答案,并将其标记为已接受。谢谢! –

回答

2

查看问题的答案。 (这是在没有答案的列表的顶部)

否则,我在我的blog post上elixir-lang.org

对于最常用的记录调查,找到了答案:

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

https://github.com/expelledboy/exml :) – expelledboy