温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

根据xsd序列化与反序列化xml

发布时间:2020-06-23 02:56:06 来源:网络 阅读:938 作者:zj6882917 栏目:编程语言
1,建立xsd
step1:建立“类型”Version、Updatetime,Files,File
step2:建立Files与File的多对一关系,添加Files中的file引用(是File类型的),修改file的属性maxOccurs为unbounded,minOccurs为1
如图:
根据xsd序列化与反序列化xml
step3:建立顶级元素“类型”Update,添加version,updatetime,files的引用,如图
根据xsd序列化与反序列化xml
step4:添加顶级元素update(类型为Update),如图
根据xsd序列化与反序列化xml

xsd代码如下:
<?xml version="1.0" encoding="utf-8"?>
<xs:schema id="UpdateFile" targetNamespace="http://tempuri.org/UpdateFile.xsd" elementFormDefault="qualified" xmlns="http://tempuri.org/UpdateFile.xsd" xmlns:mstns="http://tempuri.org/UpdateFile.xsd" xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:complexType name="Update">
        <xs:sequence>
            <xs:element name="version" type="Version" />
            <xs:element name="updatetime" type="Updatetime" />
            <xs:element name="files" type="Files" />
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="Version">
        <xs:sequence>
            <xs:element name="value" type="xs:string" />
            <xs:element name="type" type="xs:string" />
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="Updatetime">
        <xs:sequence>
            <xs:element name="value" type="xs:dateTime" />
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="Files">
        <xs:sequence>
            <xs:element name="file" type="File" maxOccurs="unbounded" minOccurs="1" />
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="File">
        <xs:sequence>
            <xs:element name="url" type="xs:string" />
        </xs:sequence>
    </xs:complexType>
    <xs:element name="update" type="Update">
    </xs:element>
</xs:schema>

2,生成实体类
用vs命令行在项目文件夹下输入以下命令
xsd.exe 要生成实体类的.xsd /c /namespace:要生成的实体类的命名空间


3,两个静态工具类
根据xsd序列化与反序列化xmlclass Common
根据xsd序列化与反序列化xml        {
根据xsd序列化与反序列化xml                /// <summary>
根据xsd序列化与反序列化xml                /// 将XML文件写入指定的对象
根据xsd序列化与反序列化xml                /// </summary>
根据xsd序列化与反序列化xml                /// <param name="xmlFile">xml绝对路径</param>
根据xsd序列化与反序列化xml                /// <param name="type">序列的类型,要与XML对应的类</param>
根据xsd序列化与反序列化xml                /// <returns>将对象返回,当文件操作失败则返回Null值</returns>
根据xsd序列化与反序列化xml                public static object DeserializeXmlToObject(string xmlFile, Type type)
根据xsd序列化与反序列化xml                {
根据xsd序列化与反序列化xml                        XmlSerializer mySerializer = new XmlSerializer(type);
根据xsd序列化与反序列化xml                        using (FileStream stream = new FileStream(xmlFile, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
根据xsd序列化与反序列化xml                        {
根据xsd序列化与反序列化xml                                return mySerializer.Deserialize(stream);
根据xsd序列化与反序列化xml                        }
根据xsd序列化与反序列化xml                }
根据xsd序列化与反序列化xml
                /// <summary>
根据xsd序列化与反序列化xml                ///    将对象写入到XML中
根据xsd序列化与反序列化xml                /// </summary>
根据xsd序列化与反序列化xml                /// <param name="obj">数据源对象</param>
根据xsd序列化与反序列化xml                /// <param name="xmlFile">目标路径</param>
根据xsd序列化与反序列化xml                /// <param name="type">转换类型</param>
根据xsd序列化与反序列化xml                public static void SerializeObjectToXml(object obj, String xmlFile, Type type)
根据xsd序列化与反序列化xml                {
根据xsd序列化与反序列化xml                        XmlSerializer mySerializer = new XmlSerializer(type);
根据xsd序列化与反序列化xml                        using (FileStream stream = new FileStream(xmlFile, FileMode.Create, FileAccess.Write, FileShare.Read))
根据xsd序列化与反序列化xml                        {
根据xsd序列化与反序列化xml                                mySerializer.Serialize(stream, obj);
根据xsd序列化与反序列化xml                        }
根据xsd序列化与反序列化xml                }
根据xsd序列化与反序列化xml        }

4,序列化与反序列化
根据xsd序列化与反序列化xml//反序列化
根据xsd序列化与反序列化xml                                Update a = new Update();
根据xsd序列化与反序列化xml                                a.version = new Version();
根据xsd序列化与反序列化xml                                a.version.type = "0";
根据xsd序列化与反序列化xml                                a.version.value = "1.0.0.0";
根据xsd序列化与反序列化xml                                a.updatetime = new Updatetime();
根据xsd序列化与反序列化xml                                a.updatetime.value = new System.DateTime();
根据xsd序列化与反序列化xml                                a.files = new File[1];
根据xsd序列化与反序列化xml                                a.files[0] = new File();
根据xsd序列化与反序列化xml                                a.files[0].url = "http://test.exe";
根据xsd序列化与反序列化xml                                Common.SerializeObjectToXml(a, "目标.xml", typeof(Update));
根据xsd序列化与反序列化xml
                                //系列化
根据xsd序列化与反序列化xml                                Update u = (Update)Common.DeserializeXmlToObject("目标.xml", typeof(Update));

5,gameover
向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI