我在wince下绘图,之后序列化为xml文件,以便以后修改。序列化的类定义一个数组,存放的是各种图形。怎么实现?

解决方案 »

  1.   

    我用XML对Shapes类序列化,其中定了一个数组,放的是图形,最后的xml保存成功,可是反序列化有异常说xml文档中没有根元素,不知道是不是XML不能对数组反序列化
      

  2.   

    检查:
    1. xml文件是否没有根元素。
    2. 读取和使用xml文件的方法是否正确.
      

  3.   

      序列化(s = new Shapes)序列化的类是Shapes
    FileStream fs = new FileStream("aa.xml",FileMode.Create);
      XmlSerializer xs = new XmlSerializer(s.GetType());
      xs.Serialize(xs, this.s);
      fs.Close();
    这是反序列化:
     FileStream fs = new FileStream("123.xml",FileMode.Open);
     XmlSerializer xs = new XmlSerializer(this.s.GetType());
     s = (Shapes) xs.Deserialize(fs);
     fs.Close();
     this.redraw(true);//重绘
    不知道哪里出问题了
      

  4.   

    <?xml version="1.0"?>
    <Shapes xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
      <minDim>10</minDim>
      <List>
        <anyType xsi:type="Linea">
          <penWidth>1</penWidth>
          <showBorder>true</showBorder>
          <penColor />
          <X1>149</X1>
          <Y>52</Y>
          <X>62</X>
          <Y1>103</Y1>
          <Deleted>false</Deleted>
          <IsCurve>false</IsCurve>
          <IsTri>false</IsTri>
        </anyType>
        <anyType xsi:type="Rect">
          <penWidth>1</penWidth>
          <showBorder>true</showBorder>
          <penColor />
          <X1>184</X1>
          <Y>141</Y>
          <X>119</X>
          <Y1>165</Y1>
          <Deleted>false</Deleted>
          <IsCurve>false</IsCurve>
          <IsTri>false</IsTri>
        </anyType>
      </List>
    </Shapes>
    这是序列化后的文件,存了一条直线和一个矩形
      

  5.   

    XmlReader xmlReader = XmlReader.Create("123.xml");
    XmlSerializer xs = new XmlSerializer(this.s.GetType()); 
    s = (Shapes) xs.Deserialize(xmlReader); 
    xmlReader.Close();
      

  6.   

    这是反序列化: 
    FileStream fs = new FileStream("123.xml",FileMode.Open); 
    XmlSerializer xs = new XmlSerializer(this.s.GetType()); 
    s = (Shapes) xs.Deserialize(fs); 
    fs.Close(); 
    this.redraw(true);//重绘 把 this.s.GetType() 改为 typeof(Shapes) 试试看
      

  7.   

    我博客里有篇文章写了 xml序列化的框架,你看看,这样用起来很方便。
      

  8.   

    序列化(s = new Shapes)序列化的类是Shapes 
    FileStream fs = new FileStream("aa.xml",FileMode.Create); 
      XmlSerializer xs = new XmlSerializer(s.GetType()); 
      xs.Serialize(xs, this.s); 
      fs.Close(); 
    这是反序列化: 
    FileStream fs = new FileStream("123.xml",FileMode.Open); 
    XmlSerializer xs = new XmlSerializer(this.s.GetType()); 
    s = (Shapes) xs.Deserialize(fs); 
    fs.Close(); 
    this.redraw(true);//重绘 
    不知道哪里出问题了