HtmlAgilityPack: Wie wird eingerücktes HTML erstellt?

c# html-agility-pack html-generation

Frage

Also, ich erzeuge HTML mit HtmlAgilityPack und es funktioniert perfekt, aber HTML-Text ist nicht eingerückt. Ich kann zwar eingerücktes XML bekommen, aber ich brauche HTML. Gibt es einen Weg?

HtmlDocument doc = new HtmlDocument();

// gen html
HtmlNode table = doc.CreateElement("table");
table.Attributes.Add("class", "tableClass");
HtmlNode tr = doc.CreateElement("tr");
table.ChildNodes.Append(tr);
HtmlNode td = doc.CreateElement("td");
td.InnerHtml = "—";
tr.ChildNodes.Append(td);

// write text, no indent :(
using(StreamWriter sw = new StreamWriter("table.html"))
{
        table.WriteTo(sw);
}

// write xml, nicely indented but it's XML!
XmlWriterSettings settings = new XmlWriterSettings();
settings.OmitXmlDeclaration = true;
settings.Indent = true;
settings.ConformanceLevel = ConformanceLevel.Fragment;
using (XmlWriter xw = XmlTextWriter.Create("table.xml", settings))
{
        table.WriteTo(xw);
}

Akzeptierte Antwort

Soweit ich weiß, kann HtmlAgilityPack dies nicht tun. Aber Sie könnten html Tidy Packs durchsehen, die in ähnlichen Fragen vorgeschlagen werden:


Beliebte Antwort

Nein, und es ist eine "von Design" Wahl. Es gibt einen großen Unterschied zwischen XML (oder XHTML, das ist XML, nicht HTML), wo - meistens Whitespaces keine spezifische Bedeutung haben, und HTML.

Dies ist keine so geringfügige Verbesserung, da das Ändern von Leerzeichen die Art und Weise ändern kann, in der einige Browser ein bestimmtes HTML-Chunk rendern, insbesondere fehlerhaftes HTML (das im Allgemeinen gut von der Bibliothek gehandhabt wird). Und das Html Agility Pack wurde entwickelt, um die Art und Weise, wie der HTML-Code gerendert wird , zu erhalten, nicht um die Art zu minimieren, wie das Markup geschrieben wird .

Ich sage nicht, dass es nicht machbar oder schlicht unmöglich ist. Natürlich können Sie in XML und Voilà konvertieren (und Sie könnten eine Erweiterungsmethode schreiben, um dies zu vereinfachen), aber die gerenderte Ausgabe kann im allgemeinen Fall anders sein.



Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum
Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum