我在將xml反序列化爲類對象時遇到問題。這個類與xml有一個稍微不同的結構,所以我無法反序列化它。以下是主代碼將XML反序列化到具有不同成員的類中C#
public class Customer
{
[XmlElement(ElementName = "CustomerName")]
public string Name { get; set; }
}
public class XmlCheck
{
[XmlElement(ElementName = "Customer")]
public Customer Customer { get; set; }
public List<Customer> CustomersList { get; set; }
}
class Program
{
static string xml = @"<?xml version=""1.0"" ?>
<XmlCheck>
<Customer>
<CustomerName>Omer</CustomerName>
</Customer>
<Customer>
<CustomerName>Ali</CustomerName>
</Customer>
</XmlCheck>";
static void Main(string[] args)
{
var serializer = new XmlSerializer(typeof(XmlCheck), new XmlRootAttribute("XmlCheck"));
using (var stringReader = new StringReader(xml))
using (var reader = XmlReader.Create(stringReader))
{
var xmlResult = (XmlCheck)serializer.Deserialize(reader);
xmlResult.CustomersList.Add(xmlResult.Customer);
Console.WriteLine(xmlResult.Customer.Name);
}
}
有什麼辦法,反序列化XML到客戶名單,而無需插入XML中的節點?目前,這隻能反序列化名爲「Omer」的第一個客戶節點,並將其添加到列表中。
我知道如何通過編寫自定義xml讀取器來完成上述操作,但需要使用xml反序列化。但是,如果這是不可能的使用XML反序列化,任何方式來實現這一點使用任何客戶(S/DE)的Erializer?
我使用這個XML與XML序列化和它的作品。這裏的問題是我無法反序列化到列表成員,它只反序列化第一個客戶節點。如果您認爲XmlSerializer無法正常工作,那麼可以使用其他序列化方法或自定義序列化程序來使用它? –