首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何从clojure中的嵌套XML中只过滤一些值?

从clojure中的嵌套XML中只过滤一些值的方法有多种。以下是一种常见的方式:

  1. 使用clojure.xml库加载XML数据:
代码语言:txt
复制
(require '[clojure.xml :as xml])

(def xml-data
  "<root>
     <item>
       <name>Apple</name>
       <price>1.99</price>
     </item>
     <item>
       <name>Orange</name>
       <price>0.99</price>
     </item>
   </root>")

(def parsed-xml (xml/parse-str xml-data))
  1. 使用clojure.xml库中的xpath方法选择要过滤的节点:
代码语言:txt
复制
(require '[clojure.zip :as zip])

(defn filter-xml [xml]
  (let [z (zip/xml-zip xml)]
    (->> z
         (zip/xml-> :item)
         (filter #(= "Apple" (zip/xml1-> % :name zip/text)))
         (map zip/node)
         (xml/sexpr))))

在上面的代码中,我们使用zip/xml-zip创建了一个XML Zipper,并使用zip/xml->选择了<item>节点。然后使用zip/xml1->选择了每个<item>节点下的<name>节点,并使用zip/text获取其文本值。最后,我们使用filter函数过滤出<name>为"Apple"的节点,并使用map函数获取节点的子树,最终使用xml/sexpr将节点转换为clojure的数据结构。

  1. 运行过滤函数并输出结果:
代码语言:txt
复制
(println (filter-xml parsed-xml))

运行上述代码,将会过滤出<name>为"Apple"的节点及其子树,并打印输出结果。

请注意,以上代码中没有提及具体的腾讯云产品链接,因为从clojure中过滤XML不需要云计算平台的支持。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

实用:如何将aoppointcut配置文件读取

背景 改造老项目,须要加一个aop来拦截所web Controller请求做一些处理,由于老项目比较多,且包命名也不统一,又不想每个项目都copy一份相同代码,这样会导致后以后升级很麻烦,不利于维护...于是我们想做成一个统一jar包来给各项目引用,这样每个项目须要引用该jar,然后配置对应切面值就可以了。...我们都知道,java注解里面的都是一个常量, 如: @Pointcut("execution(* com.demo.Serviceable+.*(..))")...这种方式原则上是没有办法可以进行改变。但是我们又要实现这将aop切面值做成一个动态配置,每个项目的都不一样,该怎么办呢?...这样,各项目须要引用该jar,然后在配置文件中指定要拦截pointcut就可以了。 ---- 大黄:本文主要为抛砖引玉,提供一个思路。

23.9K41
  • 源码层面分析MybatisDao接口和XML文件SQL是如何关联

    总结下: XML文件每一个SQL标签就对应一个MappedStatement对象,这里面有两个属性很重要。 id:全限定类名+方法名组成ID。...Configuration对象就是Mybatis核心类,基本所有的配置信息都维护在这里。把所有的XML都解析完成之后,Configuration就包含了所有的SQL信息。...如果有小伙伴对动态代理不熟悉,可以先补充下这部分知识,下面的内容会更好理解一些。 思考一个问题:MapperProxy是什么时候创建呢?...springboot用法,或者也可以使用xml配置方式。...总结下,当我们调用到Dao接口方法时,则会调用到MapperProxy对象invoke方法,最终会通过接口全路径名Configuration这个大管家某个map里找到MappedStatement

    2.1K20

    【译】深入 Roam 数据结构 —— 为什么 Roam 远不只是一个笔记应用

    类似地,段落将列出嵌套在它下面的块(block),而不是嵌套嵌套块下面的块。嵌套中最低层级 Block 块(叶子)则没有 :block/children 属性。...Optional attributes: 可选属性: Roam 只会在你改变特定块默认时才会设置这些属性(存在于数据库段落),例如,你将块文本对齐方式左对齐改为居中。...Predicates 断言 断言子句可以过滤结果集,包括断言返回 true 结果。在 Datalog ,你可以使用任何 Clojure 函数或 Java 方法作为谓词函数。...除了clojure.core命名空间之外,Clojure 函数必须是完全命名空间限定。遗憾是,在核心命名空间之外,我找到了几个在 Roam 能用函数。...需要注意是,如果你在 Graph 中使用 bullet,查询将返回一个:”bullet”。

    1.5K10

    Elasticsearch如何聚合查询多个统计如何嵌套聚合?并相互引用,统计索引某一个字段率?语法是怎么样

    本文将详细解释一个聚合查询示例,该查询用于统计满足特定条件文档数量,并计算其占总文档数量百分比。这里回会分享如何统计某个字段率,然后扩展介绍ES一些基础知识。...以下是一些常见聚合类型及其示例:指标聚合(Metric Aggregations)sum:计算数值字段总和。avg:计算数值字段平均值。min:查找数值字段最小。...filters:将文档分组为多个桶,每个桶对应一组过滤条件。...,如何嵌套聚合?...并相互引用,统计索引某一个字段率?语法是怎么样

    18220

    几分钟内学习 Clojure

    Clojure 是JVM上一个LISP语言变种,它比Common Lisp更强调纯函数式编程,但提供了一些STM工具以处理它所引入状态问题。...Sring类型 (class false) ;布尔对应着javaBoolean类型 (class nil); null被称为 nil(英语含义:无、零点) ; 如果你想创建一列数据字面值,...; 检索一个不存在会返回nil (stringmap "d") ; => nil ; 使用assoc 向一个map添加新键值对。...2 3} 4) ; => nil (没有就返回nil) ; clojure.sets 命名空间包含更多函数 ; 一些有用形式 ;;;;;;;;;;;;;;;;; ; clojure逻辑结构都是宏...;; ; java 拥有一个庞大各种用途标准库,你一定迫不及待想学习如何clojure中使用这些库 ; 使用import类引入java模块(这个还好没变化) (import java.util.Date

    1.7K40

    Clojure 学习入门(18)—— 数据类型

    如何表示和处理数据 Clojure是一种动态类型语言,这意味着你在程序永远不需要明确定义符号、函数、或者参数数据类型。但是,所有的仍然有一个类型。...如果你尝试执行一个类型不支持操作,将会在运行时产生错误。写代码时避免这种事情,是程序员责任。对于有动态语言背景的人来说是很自然事情,而那些使用静态语言的人需要一些转变。...基本类型 Clojure提供了一些基本类型来表示基本程序语言类型结构,比如数字,字符串和布尔。...除了实际布尔false,计算结果为false都是空 nil。 常用布尔函数 Clojure提供了一些方便布尔函数。 not not 函数(not) 接受一个参数。...列表 对Clojure来说列表十分重要,因为实际上Clojure程序本身就是由很多嵌套组成。在最基本层面上来讲,一个列表就是一些元素有序集合。

    2.3K10

    程序员需要知道8个Linux命令

    我在这里要讲的是这几个最常用命令最常见用法。如果你对linux命令并不是很了解,你想找一些这方面的资料学习,那这篇文章将会给你一个基本指导。 让我们处理一些数据开始。...对于一些小文件,你可以读取整个文件来处理它们,然而,真正log文件通常有大量内容,你不能不考虑这个情况。此时你应该考虑过滤出某些内容,把cat、sort后内容通过管道传递给过滤工具。...但我们关心Patterns of Enterprise Architecture这本书信息,而且关心数量和价格。我现在要做到是切除我们不关心任何信息。...cut cut – 删除文件字符行上某些区域 又要使用grep,我们用grep过滤出我们想要行。有了我们想要行信息,我们就可以把它们切成小段,删除不需要部分数据。...uniq uniq – 删除重复行 下面的例子展示了如何过滤出跟书相关交易,删除不需要信息,获得一个不重复信息。

    81750

    WPF备忘录(3)如何 Datagrid 获得单元格内容与 使用转换器进行绑定数据转换IValueConverter

    一、如何 Datagrid 获得单元格内容    DataGrid 属于一种 ItemsControl, 因此,它有 Items 属性并且用ItemContainer 封装它 items. ...但是,WPFDataGrid 不同于Windows Forms DataGridView。 ...== null) child = GetVisualChild(v); else break; } return child; }  二、WPF 使用转换器进行绑定数据转换...IValueConverter  有的时候,我们想让绑定数据以其他格式显示出来,或者转换成其他类型,我们可以 使用转换器来实现.比如我数据中保存了一个文件路径”c:\abc\abc.exe”...FileInfo fi = new FileInfo((string)value); return fi.Name; } //ConvertBack方法将显示转换成原来格式

    5.5K70

    Java扩展Nginx之五:五大handler(系列最核心)

    content handler是最常用handler,这是个location配置,定义了nginx收到某个请求后应该如何处理,前面的文章已经用到了 现在咱们再写一个content handler,...鉴权不通过就在rewrite handler上返回401 (Unauthorized)或者403 (Forbidden) 技术实现角度来看,您说得没错,access handler来自nginx-clojure...; import nginx.clojure.java.ArrayMap; import nginx.clojure.java.NginxJavaRingHandler; import javax.xml.bind.DatatypeConverter...有下面几处地方要注意: 以上代码来自官方demo,我这里做了点小改动(主要是文件路径改为外部参数传入) 整体功能是取出请求和响应一些参数,打印在日志文件 logUserAgent参数控制了user...agent是否打印,这个比较实用,可以通过配置来做一些开关控制 这个demo不要用于生产环境,代码可以看出,每一次请求都做了一次io操作,这是存在性能隐患,官方demo只是展示log handler

    38750

    Java扩展Nginx之六:两大filter

    与/java做对比,如下图,可见先删再加、添加都正常,另外,由于Server配置项本来就存在,所以filterput操作结果就是修改了配置项: 到这里header filter就介绍完了,接下来要看是...body是字符串,那么body filter相对简单一些,以下几个规则要注意: 继承抽象类StringFacedJavaBodyFilter, 处理一次web请求时候,doFilter方法可能被调用多次...只有三个元素:status, headers, filtered_chunk,一旦status不为空,nginx-clojure框架会用这次doFilter返回作为最后一次调用,返回给客户端 结合...),这里有个重点注意地方:bodyChunk在当前doFilter执行过程中有效,不要将bodyChunk保存下来用于其他地方(例如放入body filter成员变量) 继续看doFilter方法返回...filter),那么此时返回status和headers就会被忽略掉(也就是说,其实nginx-clojure框架判断status是否为空,用于结束body filter处理流程,至于status

    52430

    来来来,咱们元编程入个门

    那么本文就干一些,尝试用粗浅语言对 metaprogramming / macro 做个小小入门,主要是讲清楚一些概念和思想。文字代码一起上,酒干倘卖无。...AST 我们知道,几乎任何语言中,代码在 "编译"(解释型语言在运行时也有编译过程) 过程,都会生成一种树状中间状态,这就是 AST。...lhs / rhs 不断嵌套下去,可以生成非常复杂表达式语法树。 ?...我们 macro 输入输出来仔细研究一下 macro,这(研究输入和输出)也是理解一个系统第一步。...,所以返回结果是一个 if 语句相关 AST。 注意这里当我们要获取原始表达式时,我们需要使用 unquote 来获取表达式,而非表达式 AST。

    946100

    pythonmap和filter避坑指南

    ◆ 首先要明白在python什么是类型 在python要想了解类型,首先得明白以下两个: 什么是可变类型 什么是不可变类型 我们拿常见几个类型来开场: string 是类型吗?...上述介绍只是一个引子,因为了解什么是可变,什么是不可变,什么是类型对于资深pythoner是非常有意义。 接下来我们几个常见问题来开始下面的课程。...你在绝对需要时候计算它,这是懒惰。这在函数式编程很常见。这就是为什么这在python是一个问题。...user=> a ; proof that a is something else (1 2 3 4 10 12) Filter在clojure是惰性,但是你得到了正确结果,即过滤[1,2,3,4...◆ 在用 map and filter时候如何避免入坑 要解决这些问题,我们必须 返回一个,而不是迭代器 消除惰性或确保可变性不会影响返回。 修复第一个问题就像返回一个列表或元组一样简单。

    53510

    Clojure 开发那些事

    作为万里长城第一步,这篇文章首先如何入门 Clojure 语法,紧接着介绍 Clojure 开发环境搭建,然后介绍使用第三方库时一些注意点,最后介绍一下常见测试方法。...我这里放一些相关资料,有兴趣读者可以自取: Understanding Clojure’s Persistent Vectors What Lies Beneath - A Deep Dive Into...其实,在使用第三方类库之余,多去了解其实现,代码 Github 上 Clone 下来,慢慢看,Clojure 里面提供了很多实用小方法,像partition, juxt, group-by等等不一而足...nrepl Clojure REPL 可以连接到远程服务器上进程,直接对进程函数或变量进行修改,这是非常便利,对于很多运行时错误可以采用这种方式解决,Emacs 与 Intellj 里面都提供了连接远程...大部分都是一些简单语法介绍或者概念阐述,我希望能够弥补这一块,把自己使用 Clojure 开发经历分享出来,供以后同学参考。

    1.6K20
    领券