有条件地包含/排除XML名称空间元素前缀

时间:2016-08-24 15:56:06

标签: c# xml xml-serialization irs

我遇到过一种情况,当我处理特定年份(2016)的记录时,我需要在序列化元素时从元素中排除前缀。但是,如果我正在处理上一年(2015年)的记录,则应包括此前缀。

示例:

2015年IRS模式将CountryNmForeignProvinceNm字段定义为irs:CountryNmirs:ForeignProvinceNm作为ForeignAddressGrpType元素的子元素。

我在课程Address中定义了以下内容。当我序列化这些属性时,我会按预期获得irs:CountryNmirs:ForeignProvinceNm

// IRS_Namespace.commonNamespace uses the prefix 'irs'.

[XmlElement(Namespace = IRS_Namespace.commonNamespace)]
public string CountryNm
{
    get { return _CountryName; }
    set { _CountryName = value.Trim(); }
}

[XmlElement(Namespace = IRS_Namespace.commonNamespace)]
public string ForeignProvinceNm
{
    get { return _ForeignProvinceName; }
    set { _ForeignProvinceName = value.Trim(); }
}

如果我正确解释2016年税务年度的更改文档,IRS会更新其架构定义并从这两个字段中删除前缀。

问题:
在处理TY2016数据与TY2015数据时,如何有条件地从这些字段中删除前缀?

IRS已指示发送任何TY2015数据的州必须使用2015架构,而为TY2016发送的新记录必须使用2016架构。

我是否需要维护Address类的两个(或更多版本)版本?

0 个答案:

没有答案