评论者:bpeter
我已经找到了一个解决方案,如下所示,并在 (链接: ^zip-xml-bug-descent.tgz) 中
`
(defn descent=
[tagname]
(fn [loc]
(filter #(and (zip/branch? %) (= tagname (:tag (zip/node %))))
(testing "使用 descent 选择内部名称"
(is (= "Inner"
(-> (zip-xml/xml1-> root :Root :Group (descent= :Group) :Name zip-xml/text)))))
`
似乎在 {{tag=}} 中匹配元素自身,在 {{or}} 表达式中的第一个表达式是我的问题所在。我怀疑它可以用作选择根元素。还有什么其他需求吗?
`
(defn tag=
[tagname]
(fn [loc]
(or (= tagname (:tag (zip/node loc)))
(filter #(and (zip/branch? %) (= tagname (:tag (zip/node %))))
(zf/children-auto loc)))))
`
也许应该有一个 {{self}} 前缀?