2011-01-18 10 views
1

私はcxml-stpパッケージを使用してHTMLを検索しようとしています。cxml-stpを使用してHTMLを検索する

* (cxml:parse "<html><body><table><tr><td/></tr><tr><td/></tr></table></body></html>" (stp:make-builder)) 

#.(CXML-STP-IMPL::DOCUMENT 
    :CHILDREN '(#.(CXML-STP:ELEMENT 
        #| :PARENT of type DOCUMENT |# 
        :CHILDREN '(#.(CXML-STP:ELEMENT 
           #| :PARENT of type ELEMENT |# 
           :CHILDREN '(#.(CXML-STP:ELEMENT 
               #| :PARENT of type ELEMENT |# 
               :CHILDREN '(#.(CXML-STP:ELEMENT 
                   #| :PARENT of type ELEMENT |# 
                   :CHILDREN '(#.(CXML-STP:ELEMENT 
                       #| :PARENT of type ELEMENT |# 
                       :LOCAL-NAME "td")) 
                   :LOCAL-NAME "tr") 
                  #.(CXML-STP:ELEMENT 
                   #| :PARENT of type ELEMENT |# 
                   :CHILDREN '(#.(CXML-STP:ELEMENT 
                       #| :PARENT of type ELEMENT |# 
                       :LOCAL-NAME "td")) 
                   :LOCAL-NAME "tr")) 
               :LOCAL-NAME "table")) 
           :LOCAL-NAME "body")) 
        :LOCAL-NAME "html"))) 
* (stp:find-recursively (stp:of-name "td") document) 

NIL 
* (stp:filter-recursively (stp:of-name "td") document) 

NIL 

私はここで間違っているのか分かりません。 cxml:parseの戻り値はまったく正気ではないようです。stp:find-recursivelyとstp:filter-recursivelyを間違って呼び出すと思います。

誰かが正しい方向に向いていますか? docsが、これは動作するはずと言う:私のため

(ql:quickload '("drakma" "closure-html" "cxml-stp")) 
+1

セッションあなたにshowは 'document'を定義しません。 – Svante

+0

うわー、そうです。私はそれを見ていないとは信じられません...どのような恥ずかしい。 (setqドキュメント(cxml:parse ...))それは動作します。私はLispゴーグルがまだそれほど良いものではないと思う... –

+0

これは私の見落としや言い訳ではない - しかし、.NETの土地では、私はArgumentNullExceptionを期待していただろう...しかし、このことは再帰的に呼び出され、nil引数を指定して例外をスローすることは実行できません。 –

答えて

2

作品:

(stp:filter-recursively (stp:of-name "foo") node) 

FWIW、私はすべてのパッケージをロードしています私のアプリはQuicklispを通じて必要

CL-USER> (stp:filter-recursively (stp:of-name "td") (cxml:parse "<html><body><table><tr><td/></tr><tr><td/></tr></table></body></html>" (stp:make-builder))) 

(#.(CXML-STP:ELEMENT #| :PARENT of type ELEMENT |# :LOCAL-NAME "td") 
#.(CXML-STP:ELEMENT #| :PARENT of type ELEMENT |# :LOCAL-NAME "td")) 
+1

ありがとうございます - ええ、Svanteが指摘しているように、後で検索する変数に解析操作の戻り値を実際に割り当てると役に立ちます:-) –

関連する問題