2016-09-12 25 views
1

自己を含むHTMLフラグメントを解析タグを閉じて:AngleSharp - 自己閉じタグを処理

var text = @"<tag /> and another <tag />"; 
var parser = new HtmlParser(); 
var originalHtml = parser.Parse(text); 

OuterHtmlの出力結果は次のとおりです。

<tag> and another <tag></tag></tag> 

私はanglesharpは自己を「レンダリング」しないことを知っていますカスタムフォーマッタなしでタグを閉じることができますが、入力を考慮してこの出力が期待されますか?

私のような何かを期待する:

<tag></tag> and another <tag></tag> 

答えて

1

これはAngleSharpとは何の関係もなく、むしろHTML5仕様ではありません。自己閉鎖は、いくつかの要素でのみ許可されています(ほとんどの場合、下位互換性のためにのみ使用されます)。実際にHTML5では自己クローズではなく、暗黙の自己閉鎖を使用します。<img /><img />を、<meta />を超えると<meta>を選択します。

あなたが提供したタグ(tag)は知られていないので、例外ではありません(例外のリストは短いです - 上記の2つがこのリストにあります)。同様のタグをカスタムタグに使用する場合は、divを使用してください。

今、あなたは(imgを使用して)、後者は異なり、あなたに期待される出力(シリアライズさを取得しますが、生成されたDOMがされることを確認する必要があり

var text = @"<img /> and another <img />"; 

var text = @"<div /> and another <div />"; 

を使用しての出力を比較同等)、divは現在の出力のように見えます。

重要:HTMLはXMLのサブセットのように見えるかもしれませんが、実際はそうではありません。それはまた、スーパーセットではありません。 HTMLはしばらく前に逸脱し始め、HTML5は予期せぬマークアップに対処するための共通の方法を提供することで、パーサ側で正気を最終的にもたらした。

希望すると便利です。

関連する問題