我想将我的枚举值序列化为int,但我只得到名称.
这是我的(示例)类和枚举:
public class Request {
public RequestType request;
}
public enum RequestType
{
Booking = 1,
Confirmation = 2,
PreBooking = 4,
PreBookingConfirmation = 5,
BookingStatus = 6
}
Run Code Online (Sandbox Code Playgroud)
和代码(只是为了确保我做错了)
Request req = new Request();
req.request = RequestType.Confirmation;
XmlSerializer xml = new XmlSerializer(req.GetType());
StringWriter writer = new StringWriter();
xml.Serialize(writer, req);
textBox1.Text = writer.ToString();
Run Code Online (Sandbox Code Playgroud)
这个答案(对另一个问题)似乎表明枚举应该序列化为默认值,但它似乎并没有这样做.这是我的输出:
<?xml version="1.0" encoding="utf-16"?>
<Request xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<request>Confirmation</request>
</Request>
Run Code Online (Sandbox Code Playgroud)
我已经能够通过在每个值上放置一个"[XmlEnum("X")]"属性来序列化为值,但这似乎是错误的.
我有一个xml,其中一个元素的属性可以为空.例如,
<tests>
<test language="">
.....
</test>
</tests>
Run Code Online (Sandbox Code Playgroud)
现在,语言是从模式创建的类中的枚举类型.如果指定了语言,它可以正常工作,如果它是空白则无法反序列化(如示例所示).
编辑:反序列化的代码:
XmlSerializer xmlserializer = new XmlSerializer(type);
StringReader strreader = new StringReader(stringXML);
Object o = serializer.Deserialize(strreader);
Run Code Online (Sandbox Code Playgroud)
我该如何处理这种情况
我需要解析从第三方到C#对象的XML文件.我收到的一些XML具有枚举值,我想将其存储在枚举类型中.
例如,我有以下xml文件的xsd:
<xsd:simpleType name="brandstof">
<xsd:restriction base="xsd:string">
<!-- Benzine -->
<xsd:enumeration value="B" />
<!-- Diesel -->
<xsd:enumeration value="D" />
<!-- LPG/Gas -->
<xsd:enumeration value="L" />
<!-- LPG G3 -->
<xsd:enumeration value="3" />
<!-- Elektrisch -->
<xsd:enumeration value="E" />
<!-- Hybride -->
<xsd:enumeration value="H" />
<!-- Cryogeen -->
<xsd:enumeration value="C" />
<!-- Overig -->
<xsd:enumeration value="O" />
</xsd:restriction>
</xsd:simpleType>
Run Code Online (Sandbox Code Playgroud)
我想把它映射到枚举,我得到了这个:
public enum Fuel
{
B,
D,
L,
E,
H,
C,
O
}
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是xml可以包含一个3我似乎无法放入枚举类型的值.是否有任何解决方案将此值放入枚举中.
我也可以使用a -或a /中的其他值获取其他值,并且我想将其放入枚举类型中.
欢迎Anu建议!