XmlSerializer. Deserialize解析xml

本文介绍了一种使用C#实现的XML文件序列化与解析的方法。通过定义类结构匹配XML文档结构,实现了将XML文档转换为.NET对象的过程。文章详细展示了如何定义类结构以及如何使用XmlSerializer进行序列化与反序列化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

xml结构:

<?xml version="1.0" encoding="UTF-8" ?>
 <teacher LessonTitle="测试">
	<general title="你懂的" msg="不懂"/>        
	<descrption document="jjkk" />
	<part PartTitle="测试" PartNum="5" PartOver="1">
	    <sco ScoTitle="S001" isok="测试"  />
	    <quest Title="测试" />
	</part>
	<part PartTitle="测试" PartNum="5" PartOver="1">
	   	<sco ScoTitle="S001" isok="测试"  />
	    <quest Title="测试" />
		<!--间隔线-->
	    <sco ScoTitle="S001" isok="测试"  />
	    <quest Title="测试" />
	</part>
	<part PartTitle="测试">
	    <sco ScoTitle="S001" isok="测试"  />
	    <quest Title="测试" />
	    <!--间隔线-->
	    <sco ScoTitle="S001" isok="测试"  />
	    <quest Title="测试" />
	    <!--间隔线-->
		<sco ScoTitle="S001" isok="测试"  />
		<quest Title="测试" />
	</part>
	<!--....part部分-->
</teacher>
类结构:

    [XmlRoot]
    public class teacher
    {
        [XmlAttribute]
        public string LessonTitle { get; set; }

        [XmlElement]
        public general general { get; set; }

        [XmlElement]
        public descrption descrption { get; set; }

        [XmlElement("part")]
        public List<part> partlist { get; set; }
    }

    public class general
    {
        [XmlAttribute]
        public string title { get; set; }

        [XmlAttribute]
        public string msg { get; set; }
    }
    public class descrption
    {
        [XmlAttribute]
        public string document { get; set; }
    }

    //================>part
    public class part
    {
        [XmlAttribute]
        public string PartTitle { get; set; }

        [XmlAttribute]
        public string PartNum { get; set; }

        [XmlAttribute]
        public string PartOver { get; set; }

        [XmlElement(ElementName = "sco", Type = typeof(sco), IsNullable = true)]
        [XmlElement(ElementName = "quest", Type = typeof(quest), IsNullable = true)]
        public List<kk> kks { get; set; } 
        
    }

    public class kk
    {
    }
    public class sco : kk
    {
        [XmlAttribute]
        public string ScoTitle { get; set; }

        [XmlAttribute]
        public string isok { get; set; }
    }
    public class quest :kk
    {
        [XmlAttribute]
        public string Title { get; set; }
    }
获取teacher对象:

            XmlSerializer serializer = new XmlSerializer(typeof(teacher));


            using (TextReader reader = new StreamReader("XmlFile1.xml"))
            {
                teacher result = serializer.Deserialize(reader) as teacher;
            }




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值