XmlSerializer枚举反序列化失败(不存在)空格

我有一个我反序列化的对象,它包含一个枚举’JourneyPatternLinkDirectionEnumeration’,它被用作节点’Direction’的值。

使用值指定’Direction’时,或者未指定值,并将其表示为xml as

 

一切正常。 但是,如果它在xml中

  

我收到以下错误:

“实例validation错误:”不是JourneyPatternLinkDirectionEnumeration的有效值。”

我的代码如下:

 var xmlTextReader = new XmlTextReader(xmlDocUri); xmlTextReader.WhitespaceHandling = WhitespaceHandling.None; xmlTextReader.Normalization = false; var serializer = new XmlSerializer(typeof(T), typeof(T).Assembly.GetTypes()); ouput = (T)serializer.Deserialize(xmlTextReader); 

有什么想法吗? 有一个更好的方法吗。

(抱歉,我无法发布完整代码,xml doc是一个65000行的TransXchange doc)

有一些地方将 (自闭)元素视为与具有空文本内容的元素明显不同。

假设您不控制源代码,我想知道在这种情况下您是否应该务实并将其更改为字符串成员:

 public string Direction { get { return enumField.ToString(); } set { enumField = (EnumType)Enum.Parse(value,typeof(EnumType));} } 

我不认为你在这里有选择,如果这是一个错误,那么这是一个错误。 更改源XML,或将值声明为字符串,并提供非序列化枚举包装器属性,或为实现IXmlSerializable的枚举类型创建包装类。