Pergunta

Eu estou tendo um problema usando literais XML com um StringBuilder em VB 2008. Se eu usar esse código está tudo bem.

Dim html As New System.Text.StringBuilder

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

MsgBox("hello")

Agora o problema é que eu quero envolvê HTML em torno de algo que é gerado no código.

html.Append(<html><body>)

msgbox("nothing happens")

Quando o HTML não tem a tag correspondente terminando, ele age como ele vai além do) e continua olhando para ele.

Existe algo que eu estou fazendo de errado aqui?

Foi útil?

Solução

Porque você não está formando um XML adequada em seu XML declaração Literal (no seu caso você não está fechando suas tags), você não pode usar literais XML aqui. Você nem precisa ter seus literais XML ser XML adequada ou, alternativamente, converter o seu código para usá-los como strings. Assim:

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

msgbox("nothing happens")

Outras dicas

Eu nunca usei literais XML do VB, mas eu construí um monte de XML. Eu gosto de usar as StringWriter / XmlTextWriter classes:

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()?

O palpite óbvio seria que os literais XML exigem XML bem formado. Se você quiser embrulhar as coisas, cair em uma expressão incorporada como em ...

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

Não é uma resposta, mas questão de volta para você. Qual seria o valor do uso de literais XML com o construtor string. Parece, pelo menos para mim que o que vai contra o grão. Crie o seu XML usando literais e, em seguida, é só pegar sua representação de seqüência usando a chamada de método .ToString () se você precisa de uma string.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top