華途軟體受控XML轉EXCEL
公司加密系統用的是華途的產品。最近公司高層想要重新梳理公司資訊保安管理情況,華途加密系統的梳理和優化是重中之重。
今天公司領導要求IT匯出目前系統中所有軟體、字尾的受控情況,然後IT吭哧吭哧地把華途軟體中的XML發給領導了,結果領導根本不知道如何開啟XML檔案。等到領導用IE開啟XML後,看到的是滿螢幕的天書。IT的下場我只能說:老慘了。。。
領導看到的XML如下圖:
這個XML的格式還是很清晰的:ModuleInfo定義了軟體的版本,程序標識,分類,控制型別等資訊。 Include節點下面定義了要控制的檔案字尾,Exclude節點下面定義了不控制的檔案字尾。
所以,解決這個問題的思路很簡單:通過程式碼讀取這個XML檔案,轉義成領導能看懂的格式,存成EXCEL即可。
//定義結果集
scList = new List<SecureControl>();
//讀取XML檔案
string xmlFile = Path.Combine(Application.StartupPath, "XML", "config.xml");
XElement xele = XElement.Load(xmlFile);
//讀取ModuleInfo節點集合
IList<XElement> a = xele.Descendants("ModuleInfo").ToList(); //ModuleInfo
foreach (XElement x in a)
{
try
{
//讀取節點屬性,取得軟體版本等資訊。
SecureControl sc = new SecureControl();
sc.IsCharacteristic = x.Attribute("IsCharacteristic").Value;
sc.IsControled = x.Attribute("IsControled").Value;
sc.Process = x.Attribute("Process").Value;
sc.SoftType = x.Attribute("SoftType").Value;
sc.SoftVersion = x.Attribute("SoftVersion").Value;
sc.Include = "";
sc.Exclude = "";
//遍歷讀取Include
IList<XElement> include = x.Descendants("Include").Descendants("FileType").ToList();
foreach (XElement ic in include)
{
sc.Include += (ic.Value + " ");
}
//遍歷讀取Exclude
IList<XElement> exclude = x.Descendants("Exclude").Descendants("FileType").ToList();
foreach (XElement ex in exclude)
{
sc.Exclude += (ex.Value + " ");
}
//插入結果集,用於顯示
scList.Add(sc);
}
catch
{ }
}
gridControl1.DataSource = scList;
效果展示:
讀取介面
存成的Excel: