2 Stimmen

Kodierung des Elements char type in SOAP XML

Ich habe einige Probleme bei der Kodierung des Zeichens (unitType). Unten ist die Beispielanforderung von der .NET wdsl Seite. Ich muss wissen, in welches Format ich das Zeichen kodieren soll, denn wenn ich es direkt in die XML-Datei einfüge, funktioniert das nicht. Ist für .NET (3.5) SOAP ein bestimmtes Format erforderlich?

<?xml version="1.0" encoding="utf-8"?>
 <soap12:Envelope
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xmlns:xsd="http://www.w3.org/2001/XMLSchema"
 xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
   <soap12:Body>
     <DiagnosticAnalysis xmlns="http://www.somewhere.com/">
       <tuple>int</tuple>
       <unitID>int</unitID>
       <unitType>char</unitType>
       </DiagnosticAnalysis>   
   </soap12:Body> 
 </soap12:Envelope>

Die Eingabe von etwas wie <unitType>L</unitType> funktioniert nicht und gibt mir die unten stehende Fehlermeldung:

Es gibt einen Fehler im XML-Dokument (7, 37). ---> Die Eingabezeichenfolge hatte kein korrektes Format.

1voto

rsbarro Punkte 26319

char wird als Zahl (int) durch den Befehl XmlSerializer . Da Sie offenbar versuchen, die XML-Datei von Grund auf neu zu erstellen, versuchen Sie, die XML-Datei auf <unitType>76</unitType> (76 ist der Wert für L ).

Ich habe mit dem folgenden Code in LinqPad getestet:

void Main()
{
    var m = new MyClass();
    m.UnitType = 'L';

    var serializer = new System.Xml.Serialization.XmlSerializer(typeof(MyClass));
    using(var sr = new StringWriter())
    {
        serializer.Serialize(sr, m);
        Console.WriteLine(sr.GetStringBuilder().ToString());
    }
}

public class MyClass
{
    public char UnitType { get; set; }
}

Die Ausgabe ist:

<?xml version="1.0" encoding="utf-16"?>
<MyClass xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
         xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <UnitType>76</UnitType>
</MyClass>

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X