1. 程式人生 > >自定義XML格式讀取與儲存

自定義XML格式讀取與儲存

背景

        本人頭一回寫部落格,請大家多多關照。通過讀取XML檔案獲取使用者管理許可權,其中涉及三部分:

1.XML檔案的生成;

2.XML檔案的讀取;

3.XML檔案的儲存;

如何做

第一步:自己先將XML檔案格式列出來。 

XML格式如下:

<?xml version="1.0"?>

<UMConfig xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<AppConfig>
<ApplicationName>NEXADIA Web CN</ApplicationName>
<ApplicationVersion>1.0</ApplicationVersion>
<LanguageID>zh-CN</LanguageID>
<Flag>true</Flag>
</AppConfig>
<MapConfigs>
<UMMapConfig>
<Map MoudleID="EF8CC484-48DB-4114-A98F-756C9AD850BF" TopicID="4FEB221B-D127-4E17-A4E5-718A452459B5"/>
<MapInfo TopicName="測試topic" TopicDisplayName="測試topic" PriorityIndex="1" MoudleName="測試Moudle" MoudleDisplayName="測試Moudle" ApplicationName="NEXADIA Web CN" />
</UMMapConfig>
<UMMapConfig>
<Map MoudleID="C21DD429-0C64-404B-BBB3-8A0227ECB2AA" TopicID="9385FF20-161B-4ABE-8D0A-E653DF2ABD0B"/>
<MapInfo TopicName="測試topic1" TopicDisplayName="測試topic1" PriorityIndex="2" MoudleName="測試Moudle1" MoudleDisplayName="測試Moudle1" ApplicationName="NEXADIA Web CN" />
</UMMapConfig>
<UMMapConfig>
<Map MoudleID="C21DD429-0C64-404B-BBB3-8A0227ECB2AA" TopicID="E4276FB8-5713-4F76-86AA-D836B067E192"/>
<MapInfo TopicName="測試topic1" TopicDisplayName="測試topic1" PriorityIndex="3" MoudleName="測試Moudle2" MoudleDisplayName="測試Moudle2" ApplicationName="NEXADIA Web CN" />
</UMMapConfig>
</MapConfigs>
</UMConfig>

第二步:自動建立XML檔案對應的實體類

通過程式設計師線上轉換工具

http://www.ofmonkey.com/tools/entity

效果如下:

public class UMConfig
{
public string xmlns:xsi { get; set; }

public string xmlns:xsd { get; set; }

public AppConfig AppConfig { get; set; }

public MapConfigs MapConfigs { get; set; }
}
public class AppConfig
{
public string ApplicationName { get; set; }

public string ApplicationVersion { get; set; }

public int LanguageID { get; set; }

public string Flag { get; set; }
}
public class MapConfigs
{
public UMMapConfig UMMapConfig { get; set; }
}
public class UMMapConfig
{
public Map Map { get; set; }

public MapInfo MapInfo { get; set; }
}
public class Map
{
public int MoudleID { get; set; }

public int TopicID { get; set; }
}
public class MapInfo
{
public string TopicName { get; set; }

public string TopicDisplayName { get; set; }

public string PriorityIndex { get; set; }

public string MoudleName { get; set; }

public string MoudleDisplayName { get; set; }

public string ApplicationName { get; set; }
}

第三步:XML檔案路徑獲取

public static String GetConfigFile()
{
string path = System.AppDomain.CurrentDomain.BaseDirectory.ToString() + "UMConfig.xml";
return path;
}

第四步:XML檔案儲存

public static void XMLSave(UMConfig umConfig)
{
String sConfigFile = GetConfigFile();
umConfig.Save(sConfigFile);
}

第五步:XML檔案讀取

public static UMConfig Load()
{
String sConfigFile = GetConfigFile();
Type type = typeof(UMConfig);
FileStream fs = null;
try
{
fs = new FileStream(sConfigFile, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
XmlSerializer serializer = new XmlSerializer(type);
UMConfig cfg = (UMConfig)serializer.Deserialize(fs);
if (cfg == null || cfg.MapConfigs == null)
return null;
return cfg;
}
catch (Exception ex)
{
return null;
}
finally
{
if (fs != null)
fs.Close();
}
}

總結:

可以快速自定義自己想要的XML格式,快速讀取和更改xml內容,以及XML檔案覆蓋也很容易。