Я пытаюсь разобрать структуру XML, как этотСинтаксический XML с xmerl
<result>
<event>
<title>My event</name>
<artist>
<name>Michael Jackson</name>
</artist>
</event>
<event>
<title>My event 2</name>
<artist>
<name>Rolling Stones</name>
</artist>
</event>
<result>
Так я хочу, чтобы пройти через события, и в конечном итоге с Elixir карты с соответствующим результатом. Это должно быть имя агностическое, поскольку поля на событиях меня отличаются.
Желаемый результат
[{title: “My event”, artist: [{name: “Michael Jackson”}]}, {title: “My even 2t”, artist: [{name: “Rolling stones"}]}]
Так это то, что я получил до сих пор
defmodule Test do
require Record
require IEx
Record.defrecord :xmlElement, Record.extract(:xmlElement, from_lib: "xmerl/include/xmerl.hrl")
Record.defrecord :xmlText, Record.extract(:xmlText, from_lib: "xmerl/include/xmerl.hrl")
def run do
{root, _} = :xmerl_scan.file("test.xml")
event_elements = :xmerl_xpath.string('//event', root)
# Traverse each event.
fields = Enum.map event_elements, fn(event) ->
# Traverse each field.
Enum.map event, fn(field) ->
[xmlElement(field, :name), xmlText(field, :value)]
end
end
end
end
Test.run
Я очень новой для эликсира, и я не мог найти руководство Проппер к xmerl. Надеюсь, кто-то может мне помочь, и, пожалуйста, объясните код :-).
Спасибо большое, это очищает его ИБП много! Очень признателен :-) – MartinElvar