Это не правда!
Var element As XElement = <Name><%= GetValue() %></Name>
Private Function GetValue() As String
Return "Value with < and > as well as a " & Chr(0) & " (Nul)"
End Function
работает со знаками меньшего и большего размера, но не со специальными символами, такими как NUL или другие символы с низким ASCII (при сбое не происходит сбой при добавлении строки, а при вызове ToString () или ее записи где-либо).
Если читаемость не так важна, используйте этот метод:
Public Function ToXmlString(ByVal aString As String) As String
If (aString Is Nothing) Then Return ""
Dim myResult As New StringBuilder(aString.Length + 10)
For Each myChar As Char In aString
If ("abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ.:,;!?-_$£{}()[]+*/\0123456789".IndexOf(myChar) > -1) Then
myResult.Append(myChar)
Else
Select Case myChar
Case "&"c
myResult.Append("&")
Case """"c
myResult.Append(""")
Case "<"c
myResult.Append("<")
Case ">"c
myResult.Append(">")
Case Else
myResult.Append("&#")
myResult.Append(AscW(myChar))
myResult.Append(";"c)
End Select
End If
Next
Return myResult.ToString()
End Function
для экранирования значений перед их назначением.
Если важна читабельность, реализуйте все константы из
http://de.selfhtml.org/html/referenz/zeichen.htm.