2016-12-30 1 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 오류를 방지 할 수 있습니까?

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

// your code goes below 

답변

0

변경 배달 클래스를 루트 요소 (XmlRoot 속성)에 대한 정보를 추가 :

0

같은 루트 자신을 추가

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