我有大量的对象集合,我需要转换成xml,必须根据给定的XSD进行验证。如何使用提供的xsd模式序列化大量对象?
类结构不是很复杂(aobut 20个属性和子类的两个列表) 即:
public class Person
{
public string Street, Town, City, PostCode etc;
public double Income, Tax, etc.;
public List<Account> Accounts;
...
}
但预期的XML输出复杂和不匹配的阶级结构
<Person>
<Address>
<Street/><Town/><City/>
</Address>
<FinancialData>
<Income/><Tax/>
</FinancialData>
<Accounts>
<Account>
<No>1</No>
...
</Accounts>
</Person>
什么是最好的方式来做到这一点?
我试图让的XElement结构为每个对象,然后将它们组合成的XDocument和保存
XElement document = new XElement("Person",
new XElement("Address",
new XElement("Street", this.Street),
new XElement("City", this.City),
new XElement("FinancialData",
new XElement("Income", this.Income), ...
但是创建XElements的过程是非常缓慢的,并与200个对象需要几分钟wheras我需要序列50.000对象。
我想过XmlSerializer,但是class和xsd不匹配。
更新: 我创建了自定义类,我将其基类映射到它。然后使用XmlSerializer及其属性,我用xml序列化我的对象。这很快。