0

我在 VB 2008 中使用带有 StringBuilder 的 XML 文字时遇到问题。如果我使用此代码,一切都很好。

Dim html As New System.Text.StringBuilder

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

MsgBox("hello")

现在的问题是我想将 HTML 包装在代码中生成的东西上。

html.Append(<html><body>)

msgbox("nothing happens")

当 HTML 没有相应的结束标记时,它的行为就像超出 ) 并继续寻找它。

我在这里做错了什么吗?

4

4 回答 4

2

我从未使用过 VB 的 XML 文字,但我已经建立了很多 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()?
于 2009-05-29T18:18:58.587 回答
1

明显的预感是 XML 文字需要格式良好的 XML。如果您想包装东西,请放入嵌入式表达式,如...

html.Append(<html><body><%= contentExp %></body></html>)
于 2009-05-29T18:11:20.897 回答
1

因为您没有在 XML Literal 语句中形成正确的 XML(在您的情况下,您没有关闭标签),所以您不能在此处使用 XML Literal。您要么需要让您的 XML 文字是正确的 XML,要么将您的代码转换为将它们用作字符串。因此:

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

msgbox("nothing happens")
于 2009-05-29T18:35:20.737 回答
1

不是答案,而是向你提问。将 XML Literals 与字符串生成器一起使用会有什么价值。至少在我看来,这有悖常理。使用文字创建 XML,然后如果需要字符串,只需使用 .ToString() 方法调用获取其字符串表示。

于 2009-05-29T18:51:24.963 回答