讀取XML檔案並生成DataTable
阿新 • • 發佈:2019-02-17
XML格式如下:
<?xml version="1.0" encoding="gb2312"?>
<indexs>
<index>
<time>00:00:04:839</time>
<content>內容</content>
</index>
<index>
<time>00:00:12:707</time>
<content>內容</content>
</index>
</indexs>
程式碼如下:
/// <summary>
/// 從XML檔案獲取資料
/// </summary>
/// <param name="dataGridView">資料顯示控制元件</param>
/// <param name="fileName">檔名</param>
/// <param name="filePath">路徑</param>
public void LoadIndexInfo(DataGridView dataGridView, string fileName, string filePath)
{
//獲取xml檔名
string xmlName = filePath.Substring(0, filePath.LastIndexOf('\\')) + "\\" + fileName.Substring(0, fileName.LastIndexOf('.')) + ".xml";
try
{
//節點標題
string[] header = { "時間", "內容" };
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(xmlName);
//根節點
XmlElement root = xmlDoc.DocumentElement;
//index元素節點
XmlElement index = (XmlElement)root.SelectSingleNode("index");
if (index == null)
{
while (dataGridView.Rows.Count > 0)
{
dataGridView.Rows.RemoveAt(0);
}
}
//index節點下的節點列表
XmlNodeList nodeList = index.ChildNodes;
//設定頭部
DataTable dt = new DataTable();
//獲取列名
for (int i = 0; i < header.Length; i++)
{
DataColumn dc = new DataColumn(header[i]);
dt.Columns.Add(dc);
}
XmlNodeList indexs = root.GetElementsByTagName("index");
for (int k = 0; k < indexs.Count; k++)
{
DataRow dr = dt.NewRow();
for (int i = 0; i < nodeList.Count; i++)
{
dr[i] = indexs[k].ChildNodes[i].InnerText;
}
dt.Rows.Add(dr);
}
dt.DefaultView.Sort = dt.Columns["時間"] + " ASC";
}
catch(Exception e)
{
throw e;
}
}