2009-05-29 13 views
0

VB 2008でXMLリテラルをStringBuilderで使用すると問題が発生します。このコードを使用するとすべて問題ありません。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に対応する終了タグがない場合は、それ以上のように動作し、それを探し続けます。

私がここで間違っていることはありますか?

答えて

1

を、あなたは、XMLを使用することはできませんここのリテラル。 XMLリテラルに適切なXMLを持たせるか、文字列として使用するようにコードを変換する必要があります。したがって:

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

msgbox("nothing happens") 
1

明らかな点は、XMLリテラルが整形式のXMLを必要とすることです。あなたは、物事をラップしたい場合は、のように埋め込み式でドロップ...

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

私はVBのXMLリテラルを使用したことがありませんが、私はXMLの多くを築いてきました。私はにStringWriter /てXmlTextWriterクラスを使用したい:あなたはあなたのXMLリテラルの文(あなたのケースでは、あなたのタグを閉じていない)で、適切なXMLを形成していないので

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

答えはありませんが、ご返信ください。文字列ビルダーでXMLリテラルを使用することの価値は何でしょうか。少なくともそれは穀物に逆らっているようです。リテラルを使用してXMLを作成し、文字列が必要な場合は.ToString()メソッド呼び出しを使用して文字列表現を取得します。