我找到了xml->非常混亂的用法。我已閱讀文檔和示例,但無法弄清楚如何獲取xml文檔的嵌套節點。如何在clojure.data.zip中使用xml->獲取嵌套節點?
假設以下XML是一個拉鍊(從XML-ZIP):
<html>
<body>
<div class='one'>
<div class='two'></div>
</div>
</body>
</html>
我試圖返回帶class = '二' 股利。
我期待這個工作:
(xml-> z :html :body :div :div)
或者這樣:
(xml-> z :html :body :div (attr= :class "two"))
有點像CSS選擇器。
但它只返回第一級,並且不通過樹向下搜索。
我可以使它工作的唯一辦法是:
(xml-> z :html :body :div children leftmost?)
那是什麼,我該怎麼辦?
我開始使用xml->的全部原因是爲了方便起見,避免上下左右導航拉鍊。如果xml->無法獲得嵌套節點,那麼我看不到clojure.zip上的值。
謝謝。
我用zip/down的問題與我使用children:div的問題是一樣的。這是一個漏洞抽象。我希望能夠表達標籤的語義,即(xml-> z:html:body:div [2]文本)或類似的東西。瀏覽拉鍊SOMETIMES和使用標籤有時會令人困惑,並且閱讀不好。和我不想用(xml->:html children leftmost?)代替(xml->:html:body)一樣 – Scott
我以前有過使用xml-seq的代碼,只是過濾並採用:content tags和I認爲xml->會簡單得多。但它實際上更復雜,而且由於這種不一致性,我認爲我會回到xml-seq,因爲這更容易理解。 – Scott
看到我的更新。 – akond