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


31.26 HTMLとXMLの解析

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

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

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

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

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

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

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

libxml-parse-html-region呼び出しにより以下がリターンされる:

(html ()
  (head ())
  (body ((width . "101"))
   (div ((class . "thing"))
    "Foo"
    (div ()
      "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

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