.NET中是否有编码和解码 XML 的方法?我似乎无法找到它们,并且想知道它们为什么不在那里以及使用什么呢?
我需要对XML文档进行编码并将其传递给Web服务上的字符串参数。然后需要在另一端解码。
答案 0 :(得分:8)
实际上,System.Xml.Linq
中的好对象你不用担心。
我的意思是,如果您运行此代码,则不会获得运行时异常。
var element = new XElement("Name", "<Node />");
元素的值将是具有<Node />
的文本节点。
答案 1 :(得分:1)
如果您指的是XML名称的编码/解码,则有XmlConvert.EncodeName和DecodeName。
或者您在谈论使用XmlDeclaration或XDeclaration指定整个XML文档的编码/解码? (我认为这照顾了我们encoding)
答案 2 :(得分:1)
如果您将XML作为字符串参数(非常糟糕的Web服务设计,BTW)传递,那么您不必执行任何操作。由Web服务来完成可能需要的任何编码。只需使用XDocument.ToString()
或其他任何内容,然后将结果传递给Web服务。
答案 3 :(得分:-2)
这不是真的!
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