0

url-retrieve-synchronously関数を使用していますが、応答を含むバッファーが返されます。応答の本文を取得し、それをxml-parse-regionに渡すことができる、ハッキーではない方法があるかどうか疑問に思っています。

xml-parse-from-url関数はありますか?url-retrieveからの応答を解析するにはどうすればよいですか?

4

2 に答える 2

0

Emacsで配布されているパッケージのいくつかがそれをどのように行うかを見ることができます。たとえば、、、lisp/net/newst-backend.elおよびlisp/net/soap-client.el

于 2012-11-12T04:02:57.163 に答える
0

identica-mode.el(GNU GPLバージョン2でライセンスされている)には、url-retrieveを使用してxmlパーサーに渡し、解析された応答を返す関数があります。

(defun identica-get-response-body (&optional buffer)
  "Extract HTTP response body from HTTP response, parse it as XML, and return a XML tree as list.
`buffer' may be a buffer or the name of an existing buffer.
 If `buffer' is omitted, current-buffer is parsed.

Removed the call to `identica-clean-response-body'."
  (or buffer
      (setq buffer (current-buffer)))
  (set-buffer buffer)
  (set-buffer-multibyte t)
  (let ((start (save-excursion
         (goto-char (point-min))
         (and (re-search-forward "<\?xml" (point-max) t)
              (match-beginning 0)))))
    ;;(identica-clean-response-body) ; necessary for identica, cleaned up some weird characters
    (and start
         (xml-parse-region start (point-max)))))
于 2012-11-12T19:17:11.697 に答える