Next: , Previous: , Up: Text   [Contents][Index]


32.28 HTMLとXMLの解析

Emacsがlibxml2サポートつきでコンパイルされたときは、HTMLやXMLのテキストをLispオブジェクトツリーにパースするために以下の関数が利用可能です。

Function: libxml-parse-html-region start end &optional base-url discard-comments

この関数はstartendの間のテキストをHTMLとしてパースして、HTMLパースツリー(parse tree)を表すリストをリターンする。これは構文誤りにたいして強力に対処することにより、現実世界のHTMLの処理を試みる。

オプション引数base-urlが非nilなら、それはリンク内に出現する相対URLにたいするベースURLを指定する文字列であること。

オプション引数discard-commentsが非nilなら、パースツリーはコメントなしで作成される。

パースツリー内では各HTMLノードは1つ目の要素がノード名を表すシンボル、2つ目の要素がノード属性のalist、残りの要素はサブノードであるようなリストにより表される。

以下の例でこれを示す。以下の(不正な)HTMLドキュメントを与えると:

<html><head></head><body width=101><div class=thing>Foo<div>Yes

libxml-parse-html-region呼び出しにより以下のDOM (document object model)がリターンされる:

(html nil
 (head nil)
 (body ((width . "101"))
  (div ((class . "thing"))
   "Foo"
   (div nil
    "Yes"))))
Function: shr-insert-document dom

この関数はdom内のパース済みHTMLをカレントバッファー内に描画する。引数domlibxml-parse-html-regionで生成されるようなリストであること。この関数はたとえばEWW in The Emacs Web Wowser Manualにより使用される。

Function: libxml-parse-xml-region start end &optional base-url discard-comments

この関数はlibxml-parse-html-regionと同様だが、HTMLではなくXML(構文についてより厳格)としてテキストをパースする点が異なる。