Help us understand the problem. What is going on with this article?

CommonLispでXML読み込み(CXML、XPATH)

More than 3 years have passed since last update.

CommonLispでXMLファイルを読み込みたい

読んでみました。
Closure XMLPlexippus XPathを使用しています。

xmltest.lisp
; Closure XMLをロード
(ql:quickload :cxml)
(ql:quickload :cxml-stp)
; Plexippus XPathをロード
(ql:quickload :xpath)

(let (xml)
  ; XML読み込み
  (setf xml (cxml:parse-file "./test.xml" (stp:make-builder)))
  ; 文字列を取得
  (format t "string : ~A~%" (xpath:string-value (xpath:evaluate "/document/string" xml)))
  ; 数値を取得
  (format t "number : ~A~%" (xpath:number-value (xpath:evaluate "/document/number" xml)))
  ; 複数のノードを処理する
  (xpath:do-node-set
    (node (xpath:evaluate "/document/books/*" xml))
    (format t "book : name=>~A , price=>~A~%" 
            (xpath:string-value (xpath:evaluate "name" node))
            (xpath:string-value (xpath:evaluate "price" node)))))
test.xml
<?xml version="1.0"?>
<document>
  <string>foobar</string>
  <number>123</number>
  <books>
    <book>
      <name>foo</name>
      <price>1000</price>
    </book>
    <book>
      <name>bar</name>
      <price>500</price>
    </book>
  </books>
</document>

結果。

* (load "./xmltest.lisp")

;;; Checking for wide character support... WARNING: Lisp implementation doesn't use UTF-16, but accepts surrogate code points.
 yes, using code points.
To load "cxml":
  Load 1 ASDF system:
    cxml
; Loading "cxml"
;;; Checking for wide character support... WARNING: Lisp implementation doesn't use UTF-16, but accepts surrogate code points.
 yes, using code points.
;;; Building Closure with CHARACTER RUNES
.
To load "cxml-stp":
  Load 1 ASDF system:
    cxml-stp
; Loading "cxml-stp"
.......
To load "xpath":
  Load 1 ASDF system:
    xpath
; Loading "xpath"

string : foobar
number : 123
book : name=>foo , price=>1000
book : name=>bar , price=>500
T
*

xpath:boolean-valueの使い方はよくわかりませんでした。

kedama17
SIerやってます。 趣味でrubyとLISP(Common Lisp)を書いてます。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away