代码之家  ›  专栏  ›  技术社区  ›  Alex Angas Colin

有.net的xmlencode/xmldecode吗?

  •  11
  • Alex Angas Colin  · 技术社区  · 14 年前

    有没有办法 编码 译码 XML 在.NET中?我似乎找不到他们,我想知道他们为什么不在那里,用什么代替?

    我需要对XML文档进行编码,并将其传递给Web服务上的字符串参数。然后需要在另一端解码。

    4 回复  |  直到 10 年前
        1
  •  1
  •   si618    14 年前

    如果您指的是xml名称的编码/解码,那么 XmlConvert.EncodeName DecodeName .

    或者您是在讨论使用 XmlDeclaration XDeclaration ?(我以为这能解决 encoding 对我们来说)

        2
  •  8
  •   ChaosPandion    14 年前

    实际上里面有漂亮的东西 System.Xml.Linq 你不用担心。

    我的意思是,如果运行此代码,就不会得到运行时异常。

    var element = new XElement("Name", "<Node />");
    

    元素的值将是一个文本节点 &lt;Node /&gt; .

        3
  •  1
  •   John Saunders Tony    14 年前

    如果将xml作为字符串参数传递(顺便说一句,非常糟糕的web服务设计),则不必做任何事情。由web服务来做任何必要的编码。只使用 XDocument.ToString() 或者其他什么,然后将结果传递给web服务。

        4
  •  -2
  •   David Gardiner    10 年前

    不是真的!

    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("&amp;")
                    Case """"c
                        myResult.Append("&quot;")
                    Case "<"c
                        myResult.Append("&lt;")
                    Case ">"c
                        myResult.Append("&gt;")
                    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 .