9

HTMLをクリーンアップするための本当に簡単な方法を探しています(おそらくJavaScriptコードが埋め込まれています)。2つの 異なる HTMLTidy.NETポートを試しましたが、どちらも例外をスローしています...

申し訳ありませんが、「クリーン」とは「インデント」を意味します。HTMLはまったく不正ではありません。XHTMLに厳密です。


私はついにSGMLで動作するものを手に入れましたが、これはHTMLをインデントするためのこれまでで最もばかげたコードのチャンクです。

private static string FormatHtml(string input)
{
    var sgml = new SgmlReader {DocType = "HTML", InputStream = new StringReader(input)};
    using (var sw = new StringWriter())
    using (var xw = new XmlTextWriter(sw) { Indentation = 2, Formatting = Formatting.Indented })
    {
        sgml.Read();
        while (!sgml.EOF)
            xw.WriteNode(sgml, true);
    }
    return sw.ToString();
}
4

6 に答える 6

13

AngleSharp 100%c#

    var parser = new HtmlParser();
    
    var document = parser.Parse("<html><head></head><body><i></i></body></html>");

    var sw = new StringWriter();
    document.ToHtml(sw, new PrettyMarkupFormatter());

    var HTML_prettified = sw.ToString();

セバスチャンによる編集:

 //old parse method
 var document = parser.Parse("<html><head></head><body><i></i></body></html>");

 //new parse method  -Updated version (Nuget Package AngleSharp 0.16.1): 
 var document = await parser.ParseDocumentAsync(Code); 
 
于 2018-10-18T12:46:10.657 に答える
9

HTML Tidyの最新のC#ラッパーはMark Beatonによって作成されました。これは、参照したリンク(2003)よりもかなり最新のようです。また、Markは、公式サイトから実行可能ファイルを取得するのではなく、参照用の実行可能ファイルも提供していることにも注意してください。これで、 HTMLを適切に整理して検証することができます。

于 2011-01-11T14:39:21.890 に答える
3

更新

HtmlTextWriterまたはXhtmlTextWriterの使用法を確認してください:HtmlTextWriterを使用したHtml出力のフォーマット、おそらくHtmlTextWriterを介したHTML構築の方が良いでしょうか?

また、チェックしてください:LINQ&Lambda、パート3:Html Agility Pack to LINQ to XML Converter

http://www.manoli.net/csharpformat/、見逃した場合のソースコード。


多分あなたはそれを自分でやりたいですか?このプロジェクトは役に立ちます:Html Agility Pack

Html Agility Pack(HAP)とは正確には何ですか?

これは、読み取り/書き込みDOMを構築し、プレーンXPATHまたはXSLTをサポートするアジャイルHTMLパーサーです(実際には、XPATHまたはXSLTを理解して使用する必要はありません。心配しないでください...)。これは、「Web外」のHTMLファイルを解析できるようにする.NETコードライブラリです。パーサーは、「現実世界」の不正な形式のHTMLに対して非常に寛容です。オブジェクトモデルは、System.Xmlを提案するものと非常に似ていますが、HTMLドキュメント(またはストリーム)用です。

Html Agility Packは、Linq to Objectsをサポートするようになりました(LINQ to Xml Likeインターフェイスを介して)。この機能で遊ぶために新しいベータをチェックしてください

サンプルアプリケーション:

  • ページの修正または生成。ページを好きなように修正したり、DOMを変更したり、ノードを追加したり、ノードをコピーしたりできます。名前を付けてください。

  • Webスキャナー。一連のXPATHクエリを使用して、img/srcまたはa/hrefsに簡単にアクセスできます。

  • Webスクレイパー。たとえば、XSLTファイルだけをバインディングとして使用して、既存のWebページをRSSフィードに簡単にスクラップできます。この例を示します。


また、この実装を試すことができます:HTMLTidyライブラリのマネージラッパー

于 2010-10-23T03:40:44.783 に答える
1

私は過去にSGMLリーダーを使用してHTMLをXHTMLに変換しました。調べる価値があるかもしれません...

使っていた時は何の問題もありませんでした。

于 2010-10-23T03:59:51.853 に答える
1

HtmlAgilityPackを使用できます(nugetからこのパッケージを追加します)。

コードサンプル:

string html = "<div><p>line 1<br>line 2</p><span></div>";
var htmlDoc = new HtmlAgilityPack.HtmlDocument();
htmlDoc.LoadHtml(description);
var fixedHtml = htmlDoc.DocumentNode.OuterHtml;

出力:

<div><p>line 1<br />line 2</p><span></span></div>
于 2019-04-17T19:26:36.140 に答える
0

Beautifierは、私が使用したhtml-beautifyを提供します。例えば

const beautified = html_beautify("<div><p></p></div>");
console.log(beautified)
<script src="https://cdnjs.cloudflare.com/ajax/libs/js-beautify/1.14.0/beautify-html.min.js"></script>

于 2021-07-10T06:10:42.517 に答える