2012-12-28 153 views
3

我试图反序列化的代码如何序列化属性

<request> 
    <employee id="40407">Test User</employee> 
</request> 

我创建了一个类:

public class Request 
{ 
    public string employee { get; set; } 

    [XmlAttribute("employee/id")] 
    public string employeeId { get; set; } 
} 

没有属性一切正常,但我需要从属性“id”数据为好。有一次,我把[XmlAttribute("employee/id")]它不想工作。我做错了什么?

+1

http://stackoverflow.com/questions/4154621/add-xml-attribute-to-string-property尝试此链接以及给你一个非常需要的例子序列化 - >反序列化 - http://stackoverflow.com/questions/10805344/how-to-deserialize-an-xml-string – MethodMan

回答

4

我想你需要下面的类反序列化XML:

[XmlRoot("request")] 
public class Request 
{ 
    [XmlElement("employee")] 
    public Employee Employee { get; set; } 
} 

[XmlRoot("employee")] 
public class Employee 
{ 
    [XmlText] 
    public string Name { get; set; } 

    [XmlAttribute("id")] 
    public string EmployeeId { get; set; } 
} 
+1

谢谢你的好例子! – Sergey

1
public class empl 
{ 
    [XmlText] 
    public string name { get; set; } 
    [XmlAttribute] 
    public int id { get; set; } 
} 

public class request 
{ 
     public empl employee { get; set; } 
} 


public Test() 
{ 
    XmlSerializer ser = new XmlSerializer(typeof(request)); 
    MemoryStream mem = new MemoryStream(); 
    ser.Serialize(mem , new request { employee = new empl { name="ff", id=6}}); 
    string dec = UTF8Encoding.UTF8.GetString(mem.ToArray()); 
}