KMRCLを眺める(222) XML-TAG-CONTENTS — #:g1

Posted 2010-10-28 11:21:00 GMT

今回はKMRCLのxml-utils.lispから、XML-TAG-CONTENTSです。
前回眺めた、POSITIONS-XML-TAG-CONTENTSを使ってタグの中身を切り出すものです。
動作は、

(kl::xml-tag-contents "foo" "<foo bar=\"1\">hello</foo>")
;⇒ "hello", 24, ("bar=\"1\"")
定義は、
(defun xml-tag-contents (tag xmlstr &optional (start-xmlstr 0)
                         (end-xmlstr (length xmlstr)))
  "Returns two values: the string between XML start and end tag
and position of character following end tag."
  (multiple-value-bind
      (startpos endpos nextpos attributes)
      (positions-xml-tag-contents tag xmlstr start-xmlstr end-xmlstr)
    (if (and startpos endpos)
        (values (subseq xmlstr startpos endpos) nextpos attributes)
      (values nil nil nil))))
となっています。

comments powered by Disqus