Giả sử bạn có xml sau đây để phân tích trong tập tin của bạn:
<high-node>
<low-node>my text</low-node>
</high-node>
bạn nạp clojure.xml
:
user=> (use 'clojure.xml)
khi phân tích cú pháp, xml sẽ có cấu trúc sau:
{:tag :high-node, :attrs nil, :content [{:tag :low-node, :attrs nil, :content ["my text"]}]}
và sau đó bạn có thể seq qua nội dung của tệp để lấy nội dung thứ e low-node
:
user=> (for [x (xml-seq
(parse (java.io.File. file)))
:when (= :low-node (:tag x))]
(first (:content x)))
("my text")
Tương tự, nếu bạn muốn có quyền truy cập vào toàn bộ danh sách các thông tin trên nút thấp, bạn sẽ thay đổi :when
vị để (= (:high-node (:tag x)))
:
user=> (for [x (xml-seq
(parse (java.io.File. file)))
:when (= :high-node (:tag x))]
(first (:content x)))
({:tag :low-node, :attrs nil, :content ["my text"]})
này hoạt động vì các từ khóa có thể hoạt động như các hàm. Xem Questions about lists and other stuff in Clojure và Data Structures: Keywords
Các ví dụ từ zip-query.clj có thể được tìm thấy trong xml_test.clj nằm trong src/test/clojure/clojure/data/zip trong repo github cho clojure.data.zip –
Vui, tôi đã hỏi điều này là tốt, và có câu trả lời tuyệt vời từ một số người hữu ích nhất trên SO. Tuy nhiên, ngay cả sau khi chạy dữ liệu được phân tích kết quả.xml thông qua một trong những gợi ý, cấu trúc kết quả vẫn không có nhiều ý nghĩa với tôi. Tôi sẽ xem xét xml-zip của bạn, trừ khi data.xml là người kế thừa của nó. – octopusgrabbus