4

pugixmlを使用してHTML ドキュメントを解析することに興味がありますが、HTML にはオプションの終了タグがいくつかあります。以下に例を示します。<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">

Pugixml は、閉じられていないタグに遭遇するとすぐに HTML の読み取りを停止しますが、HTML で閉じタグがないからといって、開始タグと終了タグの不一致があるとは限りません。

メタ タグが HTML ドキュメントの 2 行目にあるため、pugixml の HTML ドキュメントを解析する簡単なテストは失敗します: http://pugixml.googlecode.com/svn/tags/latest/docs/quickstart.html

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>pugixml 1.0</title>
<link rel="stylesheet" href="pugixml.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
<link rel="home" href="quickstart.html" title="pugixml 1.0">
</head>
<!--- etc... -->

pugixml で解析しようとすると、実際の HTML ドキュメントの多くは失敗します。それを回避する方法はありますか?それを「修正」する方法がない場合、pugixml と同じくらい高速な別の HTML 解析ツールはありますか?

アップデート

また、HTML パーサーが XPATH もサポートしているとよいでしょう。

4

2 に答える 2

4

最終的にpugixmlを取得してHTMLパーサーに変換し、そのためのgithubプロジェクトを作成しました:https://github.com/rofldev/pugihtml

今のところ、HTML 仕様に完全に準拠しているわけではありませんが、HTML を解析するのに十分な仕事をしてくれるので、私はそれを使用できます。HTML仕様に準拠するように取り組んでいます。

于 2012-04-14T22:23:59.137 に答える
1

これに対処する1つの方法は、HTMLをXHTMLに変換する前処理を行うことです。これにより、「公式に」XMLと見なされ、XMLツールで使用できるようになります。そのルートに行きたい場合は、この質問を参照してください: HTMLをXHTMLに変換する方法は?

于 2012-04-09T22:48:44.807 に答える