2013-06-27 10 views
14

Come realizzare questo tipo di pattern di registrazione in Elixir?Elixir ed Erlang Records Pattern Matching

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

Bonus: riscrivere this esempio dal blog di Dave Thomas in Elixir.


Aggiornamento:

trovi quello era il mio problema. Devi usare

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

per estrarre il record dal XMerL lib nel vostro programma come indicato here. Poi i .value opere di sintassi e la linea possono essere scritte come segue:

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

Henry, potresti per favore trasformarlo in una risposta e contrassegnarla come accettata. Grazie! –

risposta

2

See interrogazione. (questo è in cima alla lista senza risposta)

Altrimenti ho trovato la risposta durante le mie ricerche in un blog post su elixir-lang.org

Per i record più comunemente utilizzati:

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