Вопрос

У меня возникла проблема с использованием XML-литералов с помощью StringBuilder в VB 2008.Если я использую этот код, все будет в порядке.

Dim html As New System.Text.StringBuilder

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

MsgBox("hello")

Теперь проблема в том, что я хочу обернуть HTML вокруг чего-то, что генерируется в коде.

html.Append(<html><body>)

msgbox("nothing happens")

Когда HTML-код не имеет соответствующего конечного тега, он действует так, как будто выходит за пределы ) и продолжает искать его.

Есть ли что-то, что я здесь делаю не так?

Это было полезно?

Решение

Поскольку вы не формируете правильный XML в своем операторе XML Literal (в вашем случае вы не закрываете свои теги), вы не можете использовать XML-литералы здесь.Вам либо нужно, чтобы ваши XML-литералы были правильными XML, либо, в качестве альтернативы, преобразовать ваш код для использования их в виде строк.Таким образом:

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

msgbox("nothing happens")

Другие советы

Я никогда не использовал XML-литералы VB, но я создал много XML-файлов.Мне нравится использовать классы 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()?

Очевидная догадка заключалась бы в том, что XML-литералы требуют хорошо сформированного XML.Если вы хотите обернуть что-либо, введите встроенное выражение, как в...

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

Не ответ, а ответный вопрос к вам.Какова была бы ценность использования XML-литералов с помощью string builder?По крайней мере, мне кажется, что это противоречит здравому смыслу.Создайте свой XML, используя литералы, а затем просто получите его строковое представление с помощью .Вызов метода toString(), если вам нужна строка.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top