Domanda

Sto avendo un problema con letterali XML con uno StringBuilder in VB 2008. Se io uso questo codice è tutto a posto.

Dim html As New System.Text.StringBuilder

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

MsgBox("hello")

Ora il problema è che voglio avvolgere HTML intorno a qualcosa che viene generato nel codice.

html.Append(<html><body>)

msgbox("nothing happens")

Quando il codice HTML non ha il tag corrispondente fine, si comporta come si va oltre il) e continua a cercarlo.

C'è qualcosa che sto facendo male qui?

È stato utile?

Soluzione

Perché non state formando un XML corretto nella sua dichiarazione letterale XML (nel tuo caso non si sta chiudendo i tag), non è possibile utilizzare letterali XML qui. Si sia necessario avere le letterali XML essere corretta XML, o in alternativa convertire il codice di usarli come stringhe. Così:

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

msgbox("nothing happens")

Altri suggerimenti

Non ho mai usato letterali XML di VB, ma ho costruito un sacco di XML. Mi piace usare le classi 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()?

Il sospetto ovvia sarebbe che i letterali XML richiedono XML ben formato. Se si vuole avvolgere le cose, cadere in un'espressione incorporato come in ...

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

Non è una risposta, ma domanda di nuovo voi. Quale sarebbe il valore di usare letterali XML con il costruttore della stringa. Sembra, almeno a me che che va contro il grano. Crea il tuo XML utilizzando letterali e poi basta ottenere la sua rappresentazione di stringa utilizzando il metodo di chiamata .ToString () se avete bisogno di una stringa.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top