HTMLアジャイルパックを介してHTMLにdoctypeを追加する

.net c# html-agility-pack

質問

私はHTMLのアジリティパックを使ってHTML文書に要素や属性を追加するのは簡単だと思います。しかし、どのようにhtmlDocumentにhtmlアジリティパックを使ってdoctype(例えばHTML5の1つ)を追加できますか?ありがとうございました

受け入れられた回答

Html Agility Packパーサはdoctypeをコメントノードとして扱います。 HTML文書にdoctypeを追加するには、文書の先頭に目的のdoctypeを持つコメントノードを追加するだけです。

HtmlDocument htmlDoc = new HtmlDocument();

htmlDoc.Load("withoutdoctype.html");

HtmlCommentNode hcn = htmlDoc.CreateComment("<!DOCTYPE html>");

HtmlNode htmlNode = htmlDoc.DocumentNode.SelectSingleNode("/html");
htmlDoc.DocumentNode.InsertBefore(hcn, htmlNode);

htmlDoc.Save("withdoctype.html");

私のコードではdoctypeの存在をチェックしていないことに注意してください。


人気のある回答

私が知る限り、AgilityPackにはdoctypeを設定する直接的な方法はありませんが、Hansが述べたように、HAPはそのdoctypeをコメントノードとして扱います。したがって、既存のdoctypeを最初に見つけようとすることもできます。新しいdoctypeを作成し、そこに目的の値を貼り付けます。

var doctype = doc.DocumentNode.SelectSingleNode("/comment()[starts-with(.,'<!DOCTYPE')]");
if (doctype == null)
    doctype = doc.DocumentNode.PrependChild(doc.CreateComment());

doctype.InnerHtml = "<!DOCTYPE html>";



ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ