Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vector clojure:从xml创建地图向量_Vector_Clojure_Xml Parsing_Maps - Fatal编程技术网

Vector clojure:从xml创建地图向量

Vector clojure:从xml创建地图向量,vector,clojure,xml-parsing,maps,Vector,Clojure,Xml Parsing,Maps,我有一个问题,就是如何在clojure中对xml文件执行select*样式的查询。 比如说,我有一个XML,如果我把它粘贴到这里,你可以从这个URL得到它,看起来不太好 我想为XML中的所有重复行获取一个带有标记的映射向量及其值。因此,在这个示例XML中,每个映射都是一个事件。我可以解析它,并为它创建一个拉链结构。我也知道如何使用结构映射来实现这一点,但我想要一个更通用的解决方案,用于任何给定的xml,可能还有一些起始标记。我想要的与此相反。任何想法都很好 谢谢 你应该看看。它将XML转换为不同

我有一个问题,就是如何在clojure中对xml文件执行select*样式的查询。 比如说,我有一个XML,如果我把它粘贴到这里,你可以从这个URL得到它,看起来不太好

我想为XML中的所有重复行获取一个带有标记的映射向量及其值。因此,在这个示例XML中,每个映射都是一个事件。我可以解析它,并为它创建一个拉链结构。我也知道如何使用结构映射来实现这一点,但我想要一个更通用的解决方案,用于任何给定的xml,可能还有一些起始标记。我想要的与此相反。任何想法都很好

谢谢

你应该看看。它将XML转换为不同的基于列表/地图的结构,并允许对其进行查询

例如,要选择所有事件,您必须执行以下操作:

(require '[net.cgrand.enlive-html :as html])
(def data (html/xml-resource "your.xml"))
(html/select data [:events])
要获取所有活动标题,请执行以下操作:

(select data [:even :title :*])
我已经好几个月没用了,所以我有点生锈了。但是网上有很多资料

编辑:

实际上,您可以使用Zipper来导航由xml资源创建的数据结构。下面是一个示例,我在其中查找任何与word bank相关的链接,然后从中找到它的父节点

(require [net.cgrand.enlive-html :as html])
(require [net.cgrand.xml :as xml])
(require [clojure.zip :as z])

(map
  (comp z/node z/up)
  (@#'html/zip-select-nodes*
   (map xml/xml-zip (html/html-resource page2))
   (@#'html/automaton
    [:a (html/re-pred #".*[Bb]ank.*")])))

我必须使用@作为函数,zip选择节点*和自动机是名称空间专用的。

我知道有一个用于xpath的clojure库,但我认为我可以使用Zipper来实现它……但运气不好……其作者将其描述为:Zipper很酷,实际上可以与Enlive一起使用,但它有点隐藏。我会在我的答案中添加关于它的信息!我的想法更像这样:->>en html/select xml doc[:holiday]map en html/text partition 2 map zipmap[:name:month]%。它与xml国际左撇子日8月13日罗孚的生日10月12日配合得很好。。。但不是我的。我无法从订阅源中选择任何内容。