我有一个类型为"clojure.data.xml.Element"的数据结构,看起来像这样(漂亮打印):
{:tag :eSearchResult,
:attrs {},
:content
({:tag :Count, :attrs {}, :content ("16")}
{:tag :RetMax, :attrs {}, :content ("16")}
{:tag :RetStart, :attrs {}, :content ("0")}
{:tag :IdList,
:attrs {},
:content
({:tag :Id, :attrs {}, :content ("28911150")}
{:tag :Id, :attrs {}, :content ("28899394")}
{:tag :Id, :attrs {}, :content ("28597238")}
{:tag :Id, :attrs {}, :content ("28263281")}
{:tag :Id, :attrs {}, :content ("28125459")}
{:tag :Id, :attrs {}, :content ("26911135")}
{:tag :Id, :attrs {}, :content ("26699345")}
{:tag :Id, :attrs {}, :content ("26297102")}
{:tag :Id, :attrs {}, :content ("26004019")}
{:tag :Id, :attrs {}, :content ("25995331")}
{:tag :Id, :attrs {}, :content ("25429093")}
{:tag :Id, :attrs {}, :content ("25355095")}
{:tag :Id, :attrs {}, :content ("25224593")}
{:tag :Id, :attrs {}, :content ("24816246")}
{:tag :Id, :attrs {}, :content ("24779721")}
{:tag :Id, :attrs {}, :content ("24740865")})}
Run Code Online (Sandbox Code Playgroud)
如何从这些记录中提取ID?换句话说,创建一个获取此数据结构并返回Id字符串列表的函数("28911150""28899394"......)?
谢谢.
您可以使用Clojure的基本数据访问器实现这一目标:
(->> data ; the input
:content ; the content list
(filter #(= :IdList (:tag %))) ; only the IdLists
(mapcat :content) ; their content as one list
(filter #(= :Id (:tag %))) ; only the Ids
(mapcat :content)) ; one long list of the strings therein
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
120 次 |
| 最近记录: |