現在のドキュメントは言う:HtmlAgilityPack:誰かがHtmlDocument OptionAutoCloseOnEndをtrueに設定した場合の影響を正確に説明できますか?
定義非クローズノードに対して閉じが終わり、または直接文書で行う必要があります。 これをtrueに設定すると、ブラウザがページをどのようにレンダリングするかを実際に変更することができます。デフォルトはfalseです。
申し訳ありませんが、私はこの段落を理解できません。特に "最後に"何の?そして、「文書の中で」は正確に何を意味していますか?最後のものの前のフレーズは不愉快に聞こえる。オプションがtrueに設定されていて、htmlが適切にフォーマットされていれば、これはまだ文書に影響しますか?
私はソースコードを調べましたが、何が起こっているのかわかりませんでした。コードはtrueに設定されていないプロパティに反応します。 HtmlNode.csを参照してOptionAutoCloseOnEnd - 1707行目を検索してください。HtmlWeb.csの1113行目と1154行目にもファンキーなコードがあります。ソースコードブラウザでは行番号が表示されませんが、ページのOptionAutoCloseOnEndを検索してください。
このオプションの機能の例を説明してください。
私はHtmlAgilityPackを使用していくつかの悪いhtmlを修正し、ページコンテンツをxmlにエクスポートしています。
ひどくフォーマットされたhtmlオーバーラッピングタグがいくつか出てきました。スニペットは次のとおりです。
最初のpタグは閉じず、重なっているSTRONGタグに注意してください。
OptionAutoCloseOnEndを設定すると、何とか修正されます。私は、このプロパティを文書の構造の中で本当にtrueに設定することの効果が正確に何であるかを理解しようとしています。ここで
は、私が使用していますC#のコードです:
HtmlDocument doc = new HtmlDocument();
doc.OptionOutputAsXml = true;
doc.OptionFixNestedTags = true;
// doc.OptionAutoCloseOnEnd = true;
doc.LoadHtml(htmlText);
ありがとうございました!
ありがとうございます。 OptionAutoCloseOnEnd = falseのとき、閉じられていないpは、別の兄弟pを見つけたときに閉じるか、親が閉じたときだけ閉じますか?特定のタグのコードでその区別をしていますか?また、開始タグのない終了タグが見つかった場合はどうなりますか?それは捨てられますか? – costa
はい対応するオープニングなしの終了タグ(おそらくエラーフィールドがある)が破棄されます。タグは、(HtmlNode.csの)定義されたElementFlagsに関して特別な方法でのみ扱われます。 –