c#和XML反序列化:用于处理全球化的替换组怎么样?

时间:2010-12-28 09:30:41

标签: c# xml-serialization

我有以下架构:

<xs:element name="Company" type="xs:string" />
<xs:element name="Companhia" substitutionGroup="Company"/>
<xs:element name="Société" substitutionGroup="Company"/>

<xs:complexType name="User">
  <xs:sequence>
    <xs:element minOccurs="0" maxOccurs="1" ref="Company" />
  </xs:sequence>
</xs:complexType>

这使我能够成功验证以下XML片段:

<User>
  <Company>In English</Company>
</User>

<User>
  <Société>In French</Société>
</User>

我担心xsd生成的c#类和相应的XMLSerializer只能用于第一个XML片段。

在我看来,我有两个选择:

  1. 在反序列化之前使用XSLT处理XML文件,以便将元素名称提升为英文名称。
  2. 编写自定义反序列化代码。
  3. 你怎么看? 样品将非常感谢。 TIA。

1 个答案:

答案 0 :(得分:0)

我建议您使用以下结构进行序列化/反序列化:

<User>
    <Company language="en">In English</Company>
</User>

<User>
    <Company language="fr">In French</Company>
</User>

如果您的原始XML不符合这样的固定结构,您可以使用XSLT对其进行转换。