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'인 첫 번째 고객 노드 만 deserialize하고 목록에 추가합니다.
위의 방법을 사용자 지정 XML 판독기를 작성하여 수행하는 방법을 알고 있지만 xml 역 직렬화를 사용해야합니다. 그러나 xml deserialization을 사용하여이 작업을 수행 할 수없는 경우 고객 (s/de) erializer를 사용하여이를 수행하는 방법은 무엇입니까?
그것은 작동합니다
나는에서 그것을 얻었다. 여기에있는 문제는 목록 멤버로 역 직렬화 할 수 없다는 것입니다. 첫 번째 고객 노드 만 deserialize합니다. XmlSerializer가 작동하지 않는다고 생각하면 다른 serialization 메서드 또는 사용자 지정 serializer를 사용하여이 작업을 수행 할 수 있습니까? –