我在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没有相应的结束标记时,它的行为就像它超越了)并一直在寻找它。
我在这里做错了吗?
答案 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()方法调用获取其字符串表示。