StringBuilder和XML文字的问题

时间:2009-05-29 17:59:58

标签: xml vb.net visual-studio-2008 stringbuilder literals

我在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 个答案:

答案 0 :(得分: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()?

答案 1 :(得分:1)

显而易见的预感是XML文字需要格式良好的XML。如果你想包装东西,请插入嵌入式表达式,如...

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

答案 2 :(得分:1)

因为您没有在XML Literal语句中形成正确的XML(在您的情况下,您没有关闭标记),所以不能在此处使用XML Literals。您需要将XML文本作为正确的XML,或者转换代码以将其用作字符串。因此:

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

msgbox("nothing happens")

答案 3 :(得分:1)

不是答案,而是回答你的问题。将XML Literals与字符串构建器一起使用会有什么价值。至少在我看来这与谷物不符。使用文字创建XML,然后在需要字符串时使用.ToString()方法调用获取其字符串表示。