如何在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
答案 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")