gpt4 book ai didi

C#反序列化具有多个可能命名空间的xml

转载 作者:数据小太阳 更新时间:2023-10-29 01:45:37 25 4
gpt4 key购买 nike

我创建了一个 API 包装器类库,用于使用来自第 3 方的 rest API。

直到他们最近在他们的产品的最新版本中更新了 API 并向根元素添加了一个命名空间,这一切都在起作用,现在我的反序列化代码失败了。

我的一门课的例子:

[Serializable]
[XmlRootAttribute(ElementName = "exit_survey_list")]
public class SupportExitSurveyCollection : ApiResult { .... }

如果我将 XmlRootAttribute 中的 Namespace 属性设置为返回的新命名空间,那么它会再次正常工作。

但我需要支持两个版本的 API(命名空间的和非命名空间的),因为我无法确定哪个版本的 API 可用。

我希望在不为不同版本复制类的情况下使它工作,但不确定是否可能。

感谢您的任何输入/建议。

最佳答案

我认为这是不可能的。

你可以实现 IXmlSerializable接口(interface),并自己控制序列化 - 这可行,但它可能不是您想要的,因为它需要您自己在代码中进行大量映射。

另一种选择是预处理消息并在命名空间缺失时添加它。然后你可以有一个反序列化过程。

关于C#反序列化具有多个可能命名空间的xml,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4972319/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com