Hatena::Groupcadr

わだばLisperになる このページをアンテナに追加 RSSフィード

2004 | 12 |
2005 | 01 | 02 | 07 | 10 | 11 |
2006 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2007 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2008 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2009 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2010 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2011 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 11 |

2010-10-28

KMRCLを眺める(222) XML-TAG-CONTENTS

| 20:21 | KMRCLを眺める(222) XML-TAG-CONTENTS - わだばLisperになる を含むブックマーク はてなブックマーク - KMRCLを眺める(222) XML-TAG-CONTENTS - わだばLisperになる

今回は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))))

となっています。

ゲスト



トラックバック - http://cadr.g.hatena.ne.jp/g000001/20101028