加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

用xmerl解析xml

发布时间:2020-12-16 23:20:47 所属栏目:百科 来源:网络整理
导读:我正在尝试解析像这样的xml结构 result event titleMy event/name artist nameMichael Jackson/name /artist /event event titleMy event 2/name artist nameRolling Stones/name /artist /eventresult 所以我想遍历事件,最后得到一个带有相应结果的Elixir地
我正在尝试解析像这样的xml结构

<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

我是Elixir的新手,我找不到xmerl的任何指南.我希望有人可以帮助我,请解释一下代码:-).

解决方法

我对xmerl不太熟悉,但以下是基于你的例子我的试用(它不完整和粗糙,但希望它有所帮助).

> https://gist.github.com/parroty/7f96bc11474e9bab38b2

以下是我遇到的很好的资源,而我正在进行实验.

> http://elixirsips.com/episodes/028_parsing_xml.html
> https://gist.github.com/sasa1977/5967224
> https://gist.github.com/devinus/2726bbce531adae8e260

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读