问题描述
我有我反序列化,其中包含一个枚举'JourneyPatternLinkDirectionEnumeration,它是作为一个节点'方向'a值的对象。
I have an object I'm deserializing which contains an enum 'JourneyPatternLinkDirectionEnumeration', it's used as a value for a node 'Direction'.
在方向与指定的值,或者没有指定而且它在XML中表示为
When 'Direction' is specified with a value, or not specified and it's represented in xml as
<Direction />
一切工作正常。但是,如果它在XML作为
Everything works fine. However, if it's in the xml as
<Direction></Direction>
我收到以下错误:
I get the following error:
实例验证错误:''不是
JourneyPatternLinkDirectionEnumeration
A有效的价值。
我的代码如下:
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);
有什么想法?有没有更好的方式来做到这一点。
Any thoughts? Is there a better way to do this.
(对不起,我不能发布完整的代码,该XML文档是65000行TransXchange DOC)
(Sorry I can't post the full code, the xml doc is a 65000-line TransXchange doc)
推荐答案
有几个地方的的空的(自闭)元素获得视作显著不同的一个元素。有一个空的文本内容
There are a few places where an empty (self-closing) element gets treated as significantly different to an element that has an empty text content.
假设你不控制源头,我不知道如果在这种情况下,你应该务实,将其更改为一个字符串成员:
Assuming you don't control the source, I wonder if in this case you should be pragmatic and change it to a string member:
public string Direction {
get { return enumField.ToString(); }
set { enumField = (EnumType)Enum.Parse(value,typeof(EnumType));}
}
这篇关于XmlSerializer的枚举反序列化失败的(不存在)空白的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!