免責事項: you-can't-parse-html-with-regexブラインドマントラが始まる前に-疑問の利益を私に与えて、この質問を最後まで読んでください(+私はその正規表現についてすでに知っていると仮定します-HTMLはあなたを夢中にさせ、HTMLを解析するCthulhu Way)
HTMLに一致する正規表現に関する不満のほとんどは、HTMLが緩く形成されており、正規表現がさまざまな問題やユーザーエラー+再帰などの他の問題に一致するのが難しいという事実から来ています。
ただし、HTMLが実際に有効なXHTML(またはよりXMLに似たもの)であり、制御された環境(一般的なユーザー生成のHTMLドキュメントではなく、クライアント側のテンプレートエンジンで使用するHTMLフラグメントテンプレートなど)から発生した場合はどうなりますか? )そして、手動でエラーをチェックし、何度も検証しましたか?
なぜ興味があるのか説明させてください。私はJavascriptでさまざまなString2DOM手法の速度ベンチマークを行っており、innerHTML、outerHTML、insertAdjacentHTML、createRange、DOMParser、doc.write(iFrame経由)、さらにはJohn RiesigsHTMLtoDOMJSライブラリまですべてをテストしました。
そして、もっと速く行く方法があるかどうか知りたいです。
createElement / appendChild(+ setAttributeおよびcreateTextNode)は、JavascriptでDOM要素を作成するための最速の方法です。正規表現は、大きな文字列をトラバースするための最速の方法です。これらの2つのメソッドを組み合わせて、DOMStringフラグメントをDOMに解析するさらに高速な方法を作成することはできませんか?
HTML文字列の例:
<div class="root fragment news">
<div class="whitebg" data-name='Freddie Mercury'>
<div id='myID' class="column c2">
<h1>This is my title</h1>
<p>Vivamus urna <em>sed urna ultricies</em> ac<br/>tempor d </p>
<p>Mauris vel neque sit amet Quisque eget odio</p>
</div>
<div class="nfo hide">Lorem <a href='http://google.com/'>ipsum</a></div>
</div>
</div>
したがって、理想的には、コードは、正規表現がXHTMLスープを解析し、createElement / appendChild(+ setAttribute / createTextNode)を使用して要素を入力するdocumentFragmentを返します。(似ていますが、まだ完全ではありません例はHTML2DOMです)
私(およびその他の国々)は、JSでDOMStringからDOMを生成する際に、そのようなものが古き良きinnerHTMLを打ち負かすことができるかどうかに非常に興味を持っています。できますか?
そのようなものを作る彼らの知識を試すゲームは誰ですか?そして、Stackoverflowの年代記で彼らの場所を主張しますか?:)
EDIT2:これまで盲目的に反対票を投じた人は誰ですか?少なくとも、質問で間違っていると感じることを説明してください。私はこの主題にかなり精通しており、その背後にあるロジックを提供し、このシナリオの違いを説明し、同様の解決策を提供するいくつかのリンクを投稿しています。あなたはどうですか?