Pregunta

Estoy teniendo un problema con los literales XML con un StringBuilder en Visual Basic 2008. Si utilizo este código que todo está bien.

Dim html As New System.Text.StringBuilder

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

MsgBox("hello")

Ahora el problema es que quiero para envolver alrededor de algo de HTML que se genera en código.

html.Append(<html><body>)

msgbox("nothing happens")

Cuando el HTML no tiene la etiqueta correspondiente que termina, que actúa como que va más allá de la) y sigue en busca de ella.

¿Hay algo que estoy haciendo mal aquí?

¿Fue útil?

Solución

Debido a que usted no está formando un XML adecuado en su declaración XML literal (en su caso no se está cerrando sus etiquetas), no se puede utilizar literales XML aquí. O se necesita tener sus literales XML XML ser adecuado, o alternativamente convertir el código para utilizar como cadenas. Así:

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

msgbox("nothing happens")

Otros consejos

Nunca he usado literales XML de VB pero he construido una gran cantidad de XML. Me gusta usar las clases 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()?

El presentimiento obvia sería que los literales XML requieren XML bien formado. Si desea envolver las cosas, la caída en una expresión incrustada como en ...

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

No es una respuesta, pero la pregunta de nuevo a usted. ¿Cuál sería el valor de usar los literales XML con generador de cadenas. Parece, al menos para mí que eso va contra la corriente. Crea tu XML usando literales y luego acaba de obtener la representación de cadena utilizando el método llamado .ToString () si necesita una cadena.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top