次のマップをxmlに変換しようとしています(ベクトル値を持つキーは、ベクトル内の各要素に対してxml内のキーを繰り返す必要があります)
(use 'clojure.xml)
(defn map-to-xml2 [k v]
(cond
(nil? k) (for [[e a] v] {:tag e :content (map-to-xml2 e a)})
(map? v) (for [[e a] v] {:tag e :content (map-to-xml2 e a)})
(vector? v) (for [x v] {:tag k :content (for [[e a] x] {:tag e :content (map-to-xml2 e a)})})
:else [(str v)]))
(def studios [{:company {:name "Acme Corp" :id 1 :rank 20 :employee
[{:fname "Mark" :lname "Jones"} {:fname "Leroy" :lname "Bell"}]}}
{:company {:name "Eastwood Studios" :id 2 :rank 35 :employee
[{:fname "Lee" :lname "Marvin"} {:fname "Clint" :lname "Eastwood"}]}}])
(->> studios first (map-to-xml2 nil) first emit with-out-str (spit "acme.xml"))
(->> studios second (map-to-xml2 nil) first emit with-out-str (spit "eastwood.xml"))
次のxmlを取得します
<?xml version='1.0' encoding='UTF-8'?>
<company>
<rank>35</rank>
<employee>
<employee>
<lname>Marvin</lname>
<fname>Lee</fname>
</employee>
<employee>
<lname>Eastwood</lname>
<fname>Clint</fname>
</employee>
</employee>
<name>Eastwood Studios</name>
<id>2</id>
</company>
私が実際に石鹸を介して送信する必要があるのは
<?xml version='1.0' encoding='UTF-8'?>
<company>
<name>Eastwood Studios</name>
<id>2</id>
<rank>35</rank>
<employee>
<lname>Marvin</lname>
<fname>Lee</fname>
</employee>
<employee>
<lname>Eastwood</lname>
<fname>Clint</fname>
</employee>
</company>
上記を修正するにはどうすればよいですか?
私はExcelファイルからデータを読み込もうとしています.同じIDを持つ行または行のグループごとにwebservice呼び出しを行い、スプレッドシートを応答で更新します. 上記は、webservice 呼び出しに必要な xml を生成することです。