次のサンプル xml があります。
<data>
<products>
<product>
<section>Red Section</section>
<images>
<image>img.jpg</image>
<image>img2.jpg</image>
</images>
</product>
<product>
<section>Blue Section</section>
<images>
<image>img.jpg</image>
<image>img3.jpg</image>
</images>
</product>
<product>
<section>Green Section</section>
<images>
<image>img.jpg</image>
<image>img2.jpg</image>
</images>
</product>
</products>
</data>
Clojureで解析する方法を知っています
(require '[clojure.xml :as xml])
(def x (xml/parse 'location/of/that/xml'))
これは、xml を記述するネストされたマップを返します。
{:tag :data,
:attrs nil,
:content [
{:tag :products,
:attrs nil,
:content [
{:tag :product,
:attrs nil,
:content [] ..
もちろん、この構造は標準の Clojure 関数でトラバースできますが、たとえば XPath でクエリを実行する場合と比較すると、非常に冗長になる可能性があります。そのような構造をトラバースして検索するヘルパーはありますか? たとえば、どうすればよいですか
- すべてのリストを取得する
<product>
<images>
タグに<image>
「img2.jpg」というテキストが含まれている製品のみを取得しますsection
「赤い部分」の商品をゲット
ありがとう