2016-12-30 1 views
0

Ich versuche, eine Zeichenfolge zu Objekt deserialisieren. Ist eine XML-ähnliche Syntax, ist aber keine XML-Datei (da es keinen Stammknoten oder Namespace gibt). Das ist, was ich habe, so weit, diesen Fehler mit:deserialize eine Zeichenfolge (XML-Knoten wie Syntax) zu C# -Objekt

<delivery xmlns=''>. was not expected

Deserialize Code:

var number = 2; 
var amount = 3; 
var xmlCommand = $"<delivery number=\"{number}\" amount=\"{amount}\" />"; 
XmlSerializer serializer = new XmlSerializer(typeof(Delivery)); 
var rdr = new StringReader(xmlCommand); 
Delivery delivery = (Delivery)serializer.Deserialize(rdr); 

Lieferobjekt:

using System.Xml.Serialization; 

namespace SOMWClient.Events 
{ 
    public class Delivery 
    { 
     [XmlAttribute(AttributeName = "number")] 
     public int Number { get; set; } 

     [XmlAttribute(AttributeName = "amount")] 
     public string Amount { get; set; } 

     public Delivery() 
     { 

     } 
    } 
} 

Wie kann ich die xmlns Fehler zu vermeiden, wenn Deserialisieren?

Antwort

0

Ändern der Versandklasse und fügen Sie Informationen über das Wurzelelement (XmlRoot Attribut):

[System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)] 
[XmlRoot("delivery")] 
public class Delivery 
{ 
    [XmlAttribute(AttributeName = "number")] 
    public int Number { get; set; } 

    [XmlAttribute(AttributeName = "amount")] 
    public string Amount { get; set; } 

    public Delivery() 
    { } 
} 
0

Fügen Sie die Wurzel sich wie folgt aus:

XmlRootAttribute root = new XmlRootAttribute(); 
root.ElementName = "delivery"; 
// root.Namespace = "http://www.whatever.com"; 
root.IsNullable = true; 

// your code goes below 
Verwandte Themen