XMLWriter pour la création HTML - comment ajouter des balises simples sans paires?
Question
On m'a conseillé d'utiliser XMLwriter pour créer des documents HTML afin de les afficher dans un objet navigateur Web. Créer des doctype et des éléments de base comme HTML, BODY est OK..mais je rencontre 2 problèmes principaux:
- Je ne peux pas ajouter de balises comme
<br>
. L'utilisation de WriteString ignore<
et>
. - La chaîne de sortie est une ligne - il me faudrait quelque chose comme writeLine. Vous savez, quand j'affiche la source, tout est dans la première ligne.
Merci
La solution
Le format HTML n'est pas un format XML valide, car vous effectuez une lecture avec des balises telles que < img ... >
Vous pouvez créer XHTML , qui est conforme à XML (spécifiez ceci dans votre DOCTYPE )
En XHTML, les balises simples sont écrites comme ceci < br / > par exemple
HTML: <img src="..">
XHTML: <img src=".." />
Ce lien peut vous être utile XHTML vs HTML
La disposition des espaces blancs est agréable à lire, mais elle n’a aucune incidence sur la façon dont le navigateur affiche le code Xhtml. En effet, éliminer les espaces inutiles produira des fichiers légèrement plus petits.
Autres conseils
Vous pouvez utiliser le Indentation . propriété:
var settings = new XmlWriterSettings();
settings.Indent = true;
using (var writer = XmlWriter.Create(outputStream, settings))
{
writer.WriteDocType("html", "-//W3C//DTD XHTML 1.0 Transitional//EN", "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd", null);
writer.WriteStartElement("html");
writer.WriteStartElement("body");
writer.WriteStartElement("b");
writer.WriteValue("Test");
writer.WriteEndElement();
writer.WriteEndElement();
writer.WriteEndElement();
}