我在将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无法正常工作,那么可以使用其他序列化方法或自定义序列化程序来使用它? –