/// <summary>
/// xml文件转换为CSV
/// </summary>
/// <param name="fileName">xml格式文件</param>
/// <returns>true - CSV转换成功</returns>
private static bool ToCSV(string fileName)
{
var xmlFilePath = @"e:\ceshi.xml"; //System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetEntryAssembly().Location) + @"\" + fileName;
var csv = System.Xml.Linq.XElement.Load(xmlFilePath).Elements("Check")
.Where(a => a.Attribute("Name").Value == "Windows Security Updates")
.Elements("Detail").Elements("UpdateData")
.Where(a => a.Attribute("IsInstalled").Value == "false")
.OrderByDescending(a => a.Attribute("Severity").Value)
.Select(b => string.Format("{0},{1},{2}",
"KB" + (string)b.Attribute("KBID"),
(int)b.Attribute("Severity"),
Environment.NewLine
))
.Aggregate(new StringBuilder(), (sb, s) => sb.Append(s), sb => sb.ToString());
string csvPath = xmlFilePath.Substring(0, xmlFilePath.Length - 3) + "csv";
System.Text.Encoding enc = System.Text.Encoding.GetEncoding("shift_jis");
using (System.IO.StreamWriter sw = new System.IO.StreamWriter(csvPath, false, enc))
{
// 如果要在标题的开头显示ID列,请将其括在双引号中
// See: http://pasofaq.jp/office/excel/sylk.htm
string header = "KBID,Severity";
sw.WriteLine(header);
sw.WriteLine(csv);
}
return true;
}