2015-03-13 5 views
3

Я пытаюсь разобрать структуру 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. Надеюсь, кто-то может мне помочь, и, пожалуйста, объясните код :-).

ответ

8

Я не так хорошо знаком с xmerl, но следующее мое исследование основано на вашем примере (оно не является полным и грубым, но надеюсь, что это поможет некоторым).

Ниже приведены хорошие ресурсы, которые я столкнулся, когда я экспериментировал.

+0

Спасибо большое, это очищает его ИБП много! Очень признателен :-) – MartinElvar

Смежные вопросы