1

clojure は初めてで、XML を解析する必要があります。他の SO の 質問では、 data.zipを指摘されました(ただし、ほとんどはまだ古い clojure-contrib.zip を指摘しています)。私がしたいのは、一連のタグを収集することだけです//Foo. ただし、xml を解析することはできますが、すべての一致が空になります。

アイデアから、テスト コードの一部を data.zip からスタンドアロンの clj ファイルにコピーすることにしました。確かにそれはうまくいくはずです:

(ns test.xmltest
  (:require [clojure.xml :as xml]
            [clojure.zip :as zip]
            )
  (:use clojure.pprint)
  (:use clojure.data.zip.xml)

)

(defn parse-str [s]
    (zip/xml-zip (xml/parse (new org.xml.sax.InputSource
                            (new java.io.StringReader s)))))

(def atom1 (parse-str "<?xml version='1.0' encoding='UTF-8'?>
                      <feed xmlns='http://www.w3.org/2005/Atom'>
                        <id>tag:blogger.com,1999:blog-28403206</id>
                        <updated>2008-02-14T08:00:58.567-08:00</updated>
                        <title type='text'>n01senet</title>
                        <link rel='alternate' type='text/html' href='http://n01senet.blogspot.com/'/>
                        <entry>
                          <id>1</id>
                          <published>2008-02-13</published>
                          <title type='text'>clojure is the best lisp yet</title>
                          <author><name>Chouser</name></author>
                        </entry>
                        <entry>
                          <id>2</id>
                          <published>2008-02-07</published>
                          <title type='text'>experimenting with vnc</title>
                          <author><name>agriffis</name></author>
                        </entry>
                      </feed>
                      "))

(defn -main []
  (pprint atom1)
  (xml-> atom1 :title :text)
)

ただし、きれいな印刷出力は問題ないように見えますが、実際の一致結果は()、何を入力しても常に です。ただし、このコードとテスト ファイルのコード (42 行目) の違いはわかりません。しかし、私は何かが欠けているに違いありません。

私はclojure 1.4、leiningen 2を実行していますが、派手なことをするべきではありません。

4

1 に答える 1

1

問題に気づきました。非常にばかげたタイプミスです。最後の行は であってtext、 ではありません:text

于 2012-08-24T21:16:29.960 に答える