none
xml与对象之间的转化 RRS feed

  • 问题

  • 现有xml文件格式如下:
    <items>
        <item>
            <name></name>
            <gender></gender>
            <email></email>
            <qq></qq>
            <body></body>
            <createdate></createdate>
        </item>
    </items>
    类:
        public class Message
        {
            public string Name { get; set; }
            public Gender Gender { get; set; }
            public string Email { get; set; }
            public string QQ { get; set; }
            public string Body { get; set; }
            public DateTime CreateDate { get; set; }

            public Message()
            {
                CreateDate = DateTime.Now;
            }
        }

        public enum Gender
        {
            男,女
        }


    LINQ 2 XML:
    获得一个message数据。
    Message message = new Message();
    message.Name = (string)Element.Element("item").Element("name");
    message.Gender = (string)Element.Element("item").Element("gender"); // 报错,无法转换类型。
    xml 的数据都是 string 类型的。

    问题1: 如何处理这种情况?
    问题2:如果使用LINQ 2 SQL 那么实体类与数据之间的关系都不用编程,用 Xml 累了点,可有 Xml 数据与实体对象之间转化的简便方法?google一下说可以使用Xml 序列化,请问主要用到那几个类?

    2010年3月4日 8:02

答案

  • 把Message序列化后不只是那个标准的xml文件的标签,还有其他。
    你主要想实现什么功能,如果把xml中的数据加载到类的属性中,那就把xml文件的标签读出来,放到一个新对象的属性中。



    山西.net俱乐部
    • 已标记为答案 dbens 2010年3月7日 11:07
    2010年3月4日 14:13
    版主

全部回复

  • 1 == (int)Element.Element("item").Element("name") ? "男" : "女";
    2010年3月4日 8:54
  • 1 == (int)Element.Element("item").Element("name") ? "男" : "女";


    忘了说xml节点数据
    <gender>男</gender>
    这里存储的是男或女,不是0或1.

    message.Gender = 1 == (int)Element.Element("item").Element("name") ? "男" : "女";

    不行咯....
    2010年3月4日 9:46
  • 把Message序列化后不只是那个标准的xml文件的标签,还有其他。
    你主要想实现什么功能,如果把xml中的数据加载到类的属性中,那就把xml文件的标签读出来,放到一个新对象的属性中。



    山西.net俱乐部
    • 已标记为答案 dbens 2010年3月7日 11:07
    2010年3月4日 14:13
    版主
  • 把Message序列化后不只是那个标准的xml文件的标签,还有其他。
    你主要想实现什么功能,如果把xml中的数据加载到类的属性中,那就把xml文件的标签读出来,放到一个新对象的属性中。



    山西.net俱乐部

    明白了,自己构造一个类,通过读取xml标签读取数据,然后赋值给类属性吧?
    2010年3月6日 1:03