Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用提供的xsd模式序列化大量对象?_C#_.net_Serialization_Xsd - Fatal编程技术网

C# 如何使用提供的xsd模式序列化大量对象?

C# 如何使用提供的xsd模式序列化大量对象?,c#,.net,serialization,xsd,C#,.net,Serialization,Xsd,我有大量的对象需要转换成xml,必须根据给定的XSD进行验证 类结构不是很复杂,但是有二十个属性和两个子类列表 i、 e: 但创建Xelement的过程非常缓慢,对于200个对象,我需要序列化50000个对象,这需要几分钟的时间 我考虑过XmlSerializer,但类和xsd不匹配 更新: 我创建了将基类映射到它的自定义类。然后使用XmlSerializer及其属性将对象序列化为xml。非常快。这个XDocument Linq2Xml很简单,但是 旧数据集怎么样? 有两种方法: 在Visual

我有大量的对象需要转换成xml,必须根据给定的XSD进行验证

类结构不是很复杂,但是有二十个属性和两个子类列表 i、 e:

但创建Xelement的过程非常缓慢,对于200个对象,我需要序列化50000个对象,这需要几分钟的时间

我考虑过XmlSerializer,但类和xsd不匹配

更新:
我创建了将基类映射到它的自定义类。然后使用XmlSerializer及其属性将对象序列化为xml。非常快。

这个XDocument Linq2Xml很简单,但是

旧数据集怎么样? 有两种方法:

在Visual Studio中生成:

将xsd添加到C项目中。 从“解决方案资源管理器”中打开文件“使用打开”,选择“数据集编辑器…”是是。。。 单击数据集并转到属性 将名称设置为[your_class],并将自定义工具设置为MSDataSetGenerator 现在,VS将生成后面的代码。然后可以在代码中使用生成的类。 或者,从“开始”菜单->Visual Studio->Visual Studio工具->Visual Studio提示 具有可用于生成类的XSD.EXE


如果您想使用XMLSerialZER,可以使用XSL样式表进行XSLCOMPLIDED转换,以将XML文档从一种格式转换为另一种格式。

< P>我想,例如,您可能需要考虑使用您所选择的模板引擎。首先必须创建符合模式的XML模板,然后使用模板引擎使用实际数据呈现模板

对于NHaml,其大致如下所示:

%Person
  %Address
     %Street = person.Street
     %Town = person.Town
     %City = person.City
  ...
  %FinancialData
  - foreach (var account in person.Accounts)
    %Account
      %No
        = account.No
      ...
<Person>
  <Address>
    <Street/><Town/><City/>
  </Address>
  <FinancialData>
    <Income/><Tax/>
  </FinancialData>
  <Accounts>
  <Account>
    <No>1</No>
    ...
  </Accounts>
</Person>
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), ...
%Person
  %Address
     %Street = person.Street
     %Town = person.Town
     %City = person.City
  ...
  %FinancialData
  - foreach (var account in person.Accounts)
    %Account
      %No
        = account.No
      ...