3

壊れたHTMLを修正するために使用するデータ構造&を探しています。私は、これを行うために、あらゆる言語で多くの組み込みツールが存在することを知っています。しかし、私はこれを学びたい。私は考えることができるいくつかのアプローチをされて -壊れたHTMLを修正するアルゴリズム

  1. 正規表現を使用したが -
  2. 単純なアプローチのように思えるDOMを作成します - しかし、どのようにDOMツリーが壊れたHTMLで作成されますでしょうか?

更新日:これは私が期待している一般的な議論の詳細です。しかし、C、C++、Python、Javaのいずれかのツールを参照するのであれば、私はうまくいきます。

おかげ

答えて

3

(壊れたを扱うように設計されている)the HTML 5 parsing algorithmを使用してマークアップを解析し、それからDOMを構築します。その後、HTMLにシリアル化することができます。

+0

ウェブブラウザが相互運用可能に異なる表現を実装しているにもかかわらず、1つの表現を持つ文書を主張しているバリデーターとの混乱が、何十年もの生産性を浪費しています。彼らが「1.5年」を意味しない限り、「何十年にもわたって」広く普及したWebブラウザさえありませんでした。 –

+2

man-decades! :) – Quentin

2

RegEx + HTML =災害。

HTMLが有効なSGMLでありながらRegEx規則を破る方法が多すぎます。

本当にステートフルなSGMLパーサーが必要です。どんな言語で作業したいのかは言及していませんが、そこにはステートフルなSGMLパーサーがたくさんあります。

.NETでは、よく整形されたDOMおよび/またはXML DOMを返すステートフルパーサーであるSGMLReaderを定期的に使用しています。それははるかに堅牢で、使いやすい:C、W3Cでは

は、私は正規表現の道は長く、曲がりくねっであるという考えに同意SAX-style SGML parser

1

があるJavaでは、合理的なC SGML Parser

を持っています壊れたHTLMを読み取るためだけに設計された既存のコード。

Pythonに言及しているので、Beautiful Soupパーサーは壊れたHTMLをかなりうまく処理しています。

関連する問題