2016-12-30 15 views
0

Я пытаюсь десериализовать строку для объекта. Является синтаксисом узла xml, но не является xml (поскольку нет корневого узла или пространства имен). Это то, что я до сих пор, имея эту ошибку:десериализовать строку (синтаксис узла xml) в объект C#

<delivery xmlns=''>. was not expected

десериализации код: объект

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); 

доставки:

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() 
     { 

     } 
    } 
} 

Как я могу избежать ошибки Xmlns при десериализации?

ответ

0

Измените класс доставки и добавить информацию о корневом элементе (атрибут XmlRoot):

[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

Добавить корень сами, как это:

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

// your code goes below