• Clojure:读取xml


    在Clojure中读取XML是很容易的。比如我们有一个名叫strings.xml文件:

    1 <?xml version="1.0" encoding="utf-8"?>
    2 <resources>
    3     <string name="site-title">FY行情在线</string>
    4     <string name="home">主页</string>
    5 </resources>

    读取的步骤如下:

    1. 在project.clj中添加data.zip的依赖

    [org.clojure/data.zip "0.1.1"]

    2. 创建一个reader.clj程序(或是其它名字),代码如下:

     1 (ns demo.utilities.conf-string-reader
     2   (:use [clojure.data.zip.xml :only (attr text xml->)]) ; dep: see below
     3   (:require [clojure.xml :as xml]
     4             [clojure.zip :as zip]))
     5 
     6 (def xml (xml/parse " strings.xml"))
     7 
     8 (def zipped (zip/xml-zip xml))
     9 
    10 (defn reader []
    11   (into {}
    12         (for [[k v]
    13               (map vector
    14                    (xml-> zipped :string (attr :name))
    15                    (xml-> zipped :string text))]
    16           [(keyword k) v])))

    让我们调用一下reader函数吧,出来的结果就是{:site-title “FY行情在线”, :home “主页”}。

    其中,指定读取XML的内容的语句是(xml-> zipped :string text),输出的结果为[“FY行情在线”, “主页”],读取XML的特定属性的语句是(xml-> zipped :string (attr :name)),输出的结果为[“site-title”, “home”]。

    至于(into {}….)这个语句的作用是将两个list合并成一个map,而for的作用是将第一个list的值全部转换为keyword。关于这块可以参考我的另一篇文章:《Clojure:如何将两个list合并成一个map》

  • 相关阅读:
    Jquery 判断值是否存在于数组之内
    Linux 拷贝有更改的文件
    Thinkphp [美味]常用代码
    Oracle基础知识:DECODE、NVL
    安装配置svn
    搭建LAMP环境以及shell脚本搭建(yum安装)
    Jmeter接口测试webservice
    Jmeter插件安装和使用
    Jmeter中java接口测试
    Jmeter中聚合报告吞吐量的计算
  • 原文地址:https://www.cnblogs.com/ilovewindy/p/3791837.html
Copyright © 2020-2023  润新知