Clojure语言四:解析XML
来源:互联网 发布:淘宝店铺客服怎么应聘 编辑:程序博客网 时间:2024/05/24 02:39
现在假定有一个xml文件内容如下:
<?xml version="1.0" encoding="utf-8"?><service> <mongodb> <uri>localhost</uri> </mongodb> <socket> <port_number>7777</port_number> <login_timeout>200</login_timeout> <check_timeout>200</check_timeout> </socket></service>
Clojure提供了clojure.xml来解析xml文件。
启动REPL会话,lein repl
输入下面的命令:
user=> (require 'clojure.xml)niluser=> (clojure.xml/parse "/home/chenshu/a.xml"){:tag :service, :attrs nil, :content [{:tag :mongodb, :attrs nil, :content [{:tag :uri, :attrs nil, :content ["localhost"]}]} {:tag :socket, :attrs nil, :content [{:tag :port_number, :attrs nil, :content ["7777"]} {:tag :login_timeout, :attrs nil, :content ["200"]} {:tag :check_timeout, :attrs nil, :content ["200"]}]}]}
返回的是一个tree, 用emacs格式化一下看看:
{ :tag :service, :attrs nil, :content [{ :tag :mongodb, :attrs nil, :content [{:tag :uri, :attrs nil, :content ["localhost"]} ]} { :tag :socket, :attrs nil, :content [{:tag :port_number, :attrs nil, :content ["7777"]} {:tag :login_timeout, :attrs nil, :content ["200"]}{:tag :check_timeout, :attrs nil, :content ["200"]} ]} ]}有点像JSON,但并不是。
首先这是一个{ }括起来的map,有三个key,分别是:tag, :attrs和:content
:tag的值就是service, 注意前面有:前缀
:attrs的值是nil
:content的值是一个vector,里面包含了两个map
第一个map对应名为mongodb的xml元素
第二个map对应名为socket的xml元素
注意,使用clojure.xml之前需要通过requrie引入这个library,并且运行parse函数时前面要加上namespace
如果不想每次调用函数parse的时候都输入namespace,运行一次下面的程序即可:
user=> (use 'clojure.xml)nil
- Clojure语言四:解析XML
- 四、DOM4J解析XML
- xml四种解析
- XML(四)dom4j解析XML
- clojure从零开始(四)
- Clojure语言一:Symbol
- Clojure语言二:Literal
- Clojure语言三:容器
- Clojure语言五:StructMap
- Clojure语言八:Sequence
- Clojure语言十二: namespace
- 开始学习 Clojure 语言
- [转]Clojure 编程语言
- Clojure 语言的设计
- Clojure语言十六 clojure与java
- c语言解析xml
- go语言解析xml
- 四种解析xml方式
- 《UNIX环境高级编程》APUE源码使用方法
- ASP.NET缓存全解析4:应用程序数据缓存
- 不用组件的URL重写(适用于较大型项目)
- freemarker的数据格式化
- Sicily.1046. Plane Spotting(排序)
- Clojure语言四:解析XML
- ASP.NET缓存全解析5:文件缓存依赖
- 大学C++总结
- servlet学习
- Console命令详解,让调试js代码变得更简单
- error LNK2005: _DllMain@12 already defined
- linux基本的聊天软件代码实现
- ASP.NET缓存全解析6:数据库缓存依赖
- Oracle 10数据库迁移