KMRCLを眺める(220) FIND-END-TAG — #:g1

Posted 2010-10-22 09:46:00 GMT

今回はKMRCLのxml-utils.lispから、FIND-END-TAGです。
動作は、

(kmrcl::find-end-tag "foo" 3 "<foo>hello</foo>" 5 16)
;⇒ 10
という感じで前回のFIND-START-TAGの対で終了タグの開始位置を返すものです。
定義は、
(defun find-end-tag (tag taglen xmlstr start end)
  (fast-string-search
   (concatenate 'string "</" tag ">") xmlstr
   (+ taglen 3) start end))
というところ。
簡単に標準の関数で書けば、
(defun find-end-tag (tag taglen xmlstr start end)
  (declare (ignore taglen))
  (search (concatenate 'string "</" tag ">")
          xmlstr
          :start2 start :end2 end ))
というところでしょうか。

comments powered by Disqus