Question

Je vais avoir un problème à l'aide littéraux XML avec un StringBuilder en VB 2008. Si j'utilise ce tout code est bien.

Dim html As New System.Text.StringBuilder

html.Append(<html><body></body></html>)

MsgBox("hello")

Maintenant, le problème est que je veux envelopper HTML autour de quelque chose qui est généré dans le code.

html.Append(<html><body>)

msgbox("nothing happens")

Lorsque le HTML n'a pas la balise de fin correspondante, il agit comme il va au-delà) et continue à chercher.

Y at-il quelque chose que je fais mal ici?

Était-ce utile?

La solution

Parce que vous n'êtes pas la formation d'un XML approprié dans votre XML déclaration littérales (dans votre cas, vous ne fermez pas vos tags), vous ne pouvez pas utiliser XML littéraux ici. Vous avez besoin soit d'avoir votre littéraux XML soit XML approprié, ou bien convertir votre code pour les utiliser comme des chaînes. Ainsi:

html.Append("<html><body>")

msgbox("nothing happens")

Autres conseils

Je ne l'ai jamais utilisé les littéraux XML de VB, mais je l'ai construit beaucoup de XML. J'aime utiliser les classes StringWriter / XmlTextWriter:

StringBuilder sb = new StringBuilder();
using (StringWriter sw = new StringWriter(sb))
{
    XmlTextWriter xw = new XmlTextWriter(sw);
    xw.WriteStartElement("html");
    xw.WriteStartElement("body");
    xw.WriteRaw(contentExp);
    ...
    wr.WriteEndElement();   // body
    wr.WriteEndElement();   // html
}
// do something with sb.ToString()?

L'intuition évidente serait que littéraux XML nécessitent XML bien formé. Si vous voulez envelopper les choses, laissez tomber dans une expression intégrée comme dans ...

html.Append(<html><body><%= contentExp %></body></html>)

Pas une réponse, mais la question à vous. Quelle serait la valeur de l'utilisation littéraux XML avec le constructeur de chaîne. Il semble au moins pour moi que cela va à l'encontre du grain. Créez votre XML à l'aide littéraux et puis juste obtenir sa représentation chaîne en utilisant l'appel de méthode ToString () si vous avez besoin d'une chaîne.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top