2
내가 XML로 다음 클래스를 직렬화하는 방법을 알아 내려고 노력하고있어 (특정 방법으로, 아래 참조) :XmlRoot에 개체 컬렉션을 갖게하려면 어떻게합니까?
[XmlRoot("Farm")]
public class Farm
{
[XmlArray]
[XmlArrayItem("Person", typeof(Person))]
[XmlArrayItem("Dog", typeof(Dog))]
public List<Animal> Animals { get; set; }
}
(Dog
및 Person
모두 Animal
에서 파생한다고 가정하고, 둘 [XmlAttribute("Name")]
로 장식 된 Name
속성이) 나는이 개체를 만들 수 있어야합니다
:.
,691을 이런 내가myFarm
(콘솔로 결과 출력) 직렬화
<?xml version="1.0"?>
<Farm>
<Person Name="Bob"/>
<Dog Name="Fido"/>
</Farm>
그러나 :
var myFarm = new Farm
{
Animals = new List<Animal> {
new Person { Name = "Bob" },
new Dog { Name = "Fido" }
}
};
... 그것은 다음과 같은 문서를 직렬화가
var serializer = new XmlSerializer(typeof(Farm));
var namespaces = new XmlSerializerNamespaces();
namespaces.Add("", "");
serializer.Serialize(System.Console.Out, myFarm, namespaces);
결과는 다음과 같습니다.
<?xml version="1.0"?>
<Farm>
<Animals>
<Person Name="Bob"/>
<Dog Name="Fido"/>
</Animals>
</Farm>
여분의 동물 요소에 유의하십시오. 이걸 어떻게 없앨까요? XML 스키마 변경은 옵션이 아니지만 코드를 변경하면됩니다. 나는이 문제를 해결할 수 있기를 정말로 바랄 뿐이다. 누군가가 쉬운 수정을 안다면 (또는 쉬운 수정이 없다는 사실을 안다).
감사합니다.
작품을, 감사합니다! –