XMLWriter pour la création HTML - comment ajouter des balises simples sans paires?

StackOverflow https://stackoverflow.com/questions/1807975

  •  05-07-2019
  •  | 
  •  

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:

  1. Je ne peux pas ajouter de balises comme <br>. L'utilisation de WriteString ignore < et >.
  2. 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

Était-ce utile?

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();
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top