NETCF平台下利用XmlSerializer对于复杂类型序列化的探索(一)
2006-12-15 13:47
716 查看
我要序列化的类是由XSD.EXE根据XSD文件自动生成的,由于结构过于复杂,为说明问题这里进行了简化,现定义如下:
namespace RFID.ReaderProxy
<?xml version="1.0"?>
<TriggerCommand xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="urn:epcglobal:rp:xsd:1">
<create xmlns="">123</create>
</TriggerCommand>
而为PDA平台创建侧测试程序在创建XmlSerializer对象时抛出异常:
Type RFID.ReaderProxy.TriggerCommandItemChoiceType is missing enumeration value 'fire' for element 'fire' from namespace ''.
下面尝试性的将代码中的Unqualified改为Qualified进行测试。
代码如下:
namespace RFID.ReaderProxy
<?xml version="1.0"?>
<TriggerCommand xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="urn:epcglobal:rp:xsd:1">
<create>0</create>
</TriggerCommand>
下面将枚举类型TriggerCommandItemChoiceType中的[XmlEnumAttribute(Name = ":create")]中的冒号去掉,进行测试,说实话我也不知道这里这个冒号有什么作用。代码如下:
namespace RFID.ReaderProxy
<?xml version="1.0"?>
<TriggerCommand xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="urn:epcglobal:rp:xsd:1">
<create>123</create>
</TriggerCommand>
而上述的XML文档正是我期望得到的文档样式。虽然目的达到了,但我始终想不通其中的道理,主要有下述几点:
1. XSD文档中定义的也是Unqualified, 默认生成的代码中也是应用的Unqualified,可这个Unqualified在PDA下面却无论如何也调试不通。
2. 枚举类型中的冒号表示什么意思?
3. 默认的Unqualified在PC上生成的XML文档为何在元素中带了一个命名空间的属性,如<create xmlns="">123</create>
4. 我最终修改的结果虽然可以生成期望的XML文档,但这是源于巧合或者是确实找到了正确了方法呢?
关于NETCF中复杂类型序列化的问题我会继续跟进,因为还有另外一个XmlAnyElementAttribute的问题,我会在下篇文章中提出。
namespace RFID.ReaderProxy
<?xml version="1.0"?>
<TriggerCommand xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="urn:epcglobal:rp:xsd:1">
<create xmlns="">123</create>
</TriggerCommand>
而为PDA平台创建侧测试程序在创建XmlSerializer对象时抛出异常:
Type RFID.ReaderProxy.TriggerCommandItemChoiceType is missing enumeration value 'fire' for element 'fire' from namespace ''.
下面尝试性的将代码中的Unqualified改为Qualified进行测试。
代码如下:
namespace RFID.ReaderProxy
<?xml version="1.0"?>
<TriggerCommand xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="urn:epcglobal:rp:xsd:1">
<create>0</create>
</TriggerCommand>
下面将枚举类型TriggerCommandItemChoiceType中的[XmlEnumAttribute(Name = ":create")]中的冒号去掉,进行测试,说实话我也不知道这里这个冒号有什么作用。代码如下:
namespace RFID.ReaderProxy
<?xml version="1.0"?>
<TriggerCommand xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="urn:epcglobal:rp:xsd:1">
<create>123</create>
</TriggerCommand>
而上述的XML文档正是我期望得到的文档样式。虽然目的达到了,但我始终想不通其中的道理,主要有下述几点:
1. XSD文档中定义的也是Unqualified, 默认生成的代码中也是应用的Unqualified,可这个Unqualified在PDA下面却无论如何也调试不通。
2. 枚举类型中的冒号表示什么意思?
3. 默认的Unqualified在PC上生成的XML文档为何在元素中带了一个命名空间的属性,如<create xmlns="">123</create>
4. 我最终修改的结果虽然可以生成期望的XML文档,但这是源于巧合或者是确实找到了正确了方法呢?
关于NETCF中复杂类型序列化的问题我会继续跟进,因为还有另外一个XmlAnyElementAttribute的问题,我会在下篇文章中提出。
相关文章推荐
- NETCF平台下利用XmlSerializer对于复杂类型序列化的探索(三)
- NETCF平台下利用XmlSerializer对于复杂类型序列化的探索(二)
- ASP.NET MVC WebApi 返回数据类型序列化控制(json,xml) 用javascript在客户端删除某一个cookie键值对 input点击链接另一个页面,各种操作。 C# 往线程里传参数的方法总结 TCP/IP 协议 用C#+Selenium+ChromeDriver 生成我的咕咚跑步路线地图 (转)值得学习百度开源70+项目
- 【学习】WCF的服务契约、复杂类型序列化、消息契约的实现续-IXmlSerializable与MessageContract
- ASP.NET MVC WebApi 返回数据类型序列化控制(json,xml)
- 使用ASP.NET AJAX异步调用Web Service和页面中的类方法(10):服务器端和客户端数据类型的自动转换:以XML方式序列化数据、小结
- ASP.NET MVC WebApi 返回数据类型序列化控制(json,xml)
- 使用ASP.NET AJAX异步调用Web Service和页面中的类方法(10):服务器端和客户端数据类型的自动转换:以XML方式序列化数据、小结
- WCF 第六章 编码与序列化 使用NetDataContractSerializer共享类型
- WCF 第六章 编码与序列化 使用NetDataContractSerializer共享类型
- 利用XML序列化和Asp.Net Web缓存实现站点配置文件
- asp.net利用对象数组实现xml序列化的代码实例
- ASP.NET下使用xml反序列化、缓存实现个性化配置文件的实时生效
- 用vs2012的命令利用xsd文件生成对应的C#类,把xml的string类型映射到生成的类
- NETCF运行平台检测
- C# WebApi Xml序列化问题解决方法:“ObjectContent`1”类型未能序列化内容类型“application/xml;charset=utf-8"的响应正文。...
- C# XmlSerializer实现序列化浅析(转载)
- unity xml序列化与反序列化 多平台
- 序列化对象到Xml文件以及反序列话Xml文件到对象(序列化数据到8个Java原型类型)
- .net Mvc Controller 接收 Json/post方式 数组 字典 类型 复杂对象