我正在尝试解析像这样的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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。