After The End

DirectoryInfo:文件搜索;XmlSerializer:xml串行化读入和存储;IComparer:Array排序

一、文件搜索:
1DirectoryInfo di = new DirectoryInfo(dataPath);
2FileInfo[] xmlFiles = di.GetFiles("*.xml");
二、xml串行化
1、读入
[XmlRoot("MapItems", Namespace = "http://www.gentek.com.cn/CommonLibs.UI.MapItems", IsNullable = false)]
    
public class MapItems
    
{
        [XmlAttribute]
        
public string IconResxFile;
        [XmlArray(
"Items")]
        
public MapItem[] Items;
        [XmlAttribute]
        
public string MapImgFile;

        
public MapItems();
    }


 
public class MapItem
    
{
        
public Rectangle drawRect;
        
public string Id;
        
public bool isbig;
        
public bool isdrawRect;
        
public string m_Statement;
        
public Point Pos;
        
public bool Selected;
        
public MapItem.CameraType Type;

  
public enum CameraType
        
{
            DOME 
= 0,
            FIXCAMERA 
= 1,
        }

    }


        FileStream stream ;
                XmlSerializer serializer 
= new XmlSerializer(typeof(MapItems));
                stream 
= new FileStream(xmlFileName, FileMode.Open);
                MapItems mapItems1
= (MapItems)serializer.Deserialize(stream);

xml格式
<?xml version="1.0"?>
<MapItems xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" MapImgFile="鞍山新村站.jpg" IconResxFile="icons.resx" xmlns="http://www.gentek.com.cn/CommonLibs.UI.MapItems">
  
<Items>
    
<MapItem>
      
<Id>110</Id>
      
<Pos>
        
<X>350</X>
        
<Y>119</Y>
      
</Pos>
      
<Selected>false</Selected>
      
<ItemIcon>1</ItemIcon>
      
<Name>站厅设备走廊4</Name>
    
</MapItem>
 
</Items>
</MapItems>
2、存储
string fullFileName="directory/fileName.xml";
        serializer 
= new XmlSerializer(typeof(MapItems));
                stream 
= new FileStream(fullFileName, FileMode.OpenOrCreate);
                serializer.Serialize(stream, mapItems1);
最后关闭stream:stream.Close();
三:Array排序
 1public class myReverserClass : IComparer
 2        {
 3
 4            // Calls CaseInsensitiveComparer.Compare with the parameters reversed.
 5            int IComparer.Compare(object xobj, object yobj)
 6            {
 7                MapItem m1 = (MapItem)xobj;
 8                MapItem m2 = (MapItem)yobj;
 9                int x = Int32.Parse(m1.Id.Replace(" """), System.Globalization.NumberStyles.AllowHexSpecifier);
10                int y = Int32.Parse(m2.Id.Replace(" """), System.Globalization.NumberStyles.AllowHexSpecifier);
11
12                if (x > y)
13                    return 1;
14                if (x < y)
15                    return -1;
16                return 0;
17            }

18
19        }

20
21IComparer myComparer = new myReverserClass();
22MapItem[] items = mapItems.Items;
23Array.Sort(items, myComparer);

posted on 2007-11-30 17:52  zhanjh  阅读(528)  评论(1)    收藏  举报

导航