【问题标题】:Problem with StringBuilder and XML LiteralsStringBuilder 和 XML 文字的问题
【发布时间】:2009-05-29 17:59:58
【问题描述】:

我在 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 没有相应的结束标记时,它的行为就像超出 ) 并继续寻找它。

我在这里做错了吗?

【问题讨论】:

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


    【解决方案1】:

    我从未使用过 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()?
    

    【讨论】:

      【解决方案2】:

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

      html.Append("<html><body>")
      
      msgbox("nothing happens")
      

      【讨论】:

        【解决方案3】:

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

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

        【讨论】:

          【解决方案4】:

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

          【讨论】:

            猜你喜欢
            • 2014-04-18
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2013-02-27
            • 2014-11-10
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多