2013-06-27 2 views
14

Как сделать подобный тип записи в Elixir?Elixir и Erlang Records Pattern Matching

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

Bonus: переписать this пример из блога Дейва Томаса в эликсира.


Update:

нашел то, что было моей проблемой. Вы должны использовать

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