シリアル化によって生成されないxmlからオブジェクトを生成するためにdeserializeを使用できますか?
私がこのようなxmlファイルを持っていれば
<Person>
<Cop name ="n1" />
<Cop name ="n2" />
</Person>
IEnumberableを持つObject personとしてそれを逆シリアル化できますか?または、オブジェクトのPersonを直列化してIEnumerableプロパティと直列化する必要がありますか?
回答:
回答№1は0もちろん、XMLをデシリアライズすることはできません直列化によって生成されている場合、XML構造に一致するフィッティング属性を持つ正しいクラス構造を生成したり、書き込んだりする必要があります。と私は確信していない IEnumerable
可能ですが、 List<T>
または T[]
。以下は、 List<T>
:
string xml = @"<Person>
<Cop name =""n1"" />
<Cop name =""n2"" />
</Person>";
XmlSerializer ser = new XmlSerializer(typeof(Person));
Person p1 = (Person)ser.Deserialize(new StringReader(xml));
foreach (Cop cop in p1.Cops)
{
Console.WriteLine(cop.Name);
}
}
}
public class Person
{
[XmlElement(ElementName="Cop")]
public List<Cop> Cops { get; set; }
}
public class Cop
{
[XmlAttribute(AttributeName="name")]
public string Name { get; set; }
}
その出力
n1
n2