C#新建XML文檔
代碼示例:
public void WriteXML() { SaveFileDialog sfd = new SaveFileDialog(); sfd.Filter = "xml文檔|*.xml"; //篩選器 if (sfd.ShowDialog() == DialogResult.OK) { XmlDocument doc = new XmlDocument(); string path = sfd.FileName; //獲取用戶文件保存的路徑 //創建xml文檔的聲明 doc.AppendChild(doc.CreateXmlDeclaration("1.0", "utf-8", "yes")); //創建xml文檔的根節點 XmlElement rootNode = doc.CreateElement("Class"); //將根節點添加到xml文檔中 doc.AppendChild(rootNode); for (int i = 1; i <= 3; i++) { //創建子節點 XmlElement childNode = doc.CreateElement("Student"); //創建學號元素 XmlElement elementID = doc.CreateElement("ID"); elementID.InnerText = i.ToString(); //賦值 //創建姓名元素 XmlElement elementName = doc.CreateElement("Name"); elementName.InnerText = "張三"; //賦值 //創建性別元素 XmlElement elementSex = doc.CreateElement("Sex"); elementSex.InnerText = "男"; //賦值 //創建專業元素 XmlElement elementMajor = doc.CreateElement("Major"); elementMajor.InnerText = "軟件工程"; //賦值 //將elementID、elementName、elementSex、elementMajor、四個子元素添加到 childNode childNode.AppendChild(elementID); childNode.AppendChild(elementName); childNode.AppendChild(elementSex); childNode.AppendChild(elementMajor); //將子節點添加到根節點的末尾 rootNode.AppendChild(childNode); } //保存 doc.Save(path); MessageBox.Show("XML文檔創建成功!"); } }
XML文檔內容如下:
<?xml version="1.0" encoding="utf-8" standalone="yes"?> <Class> <Student> <ID>1</ID> <Name>張三</Name> <Sex>男</Sex> <Major>軟件工程</Major> </Student> <Student> <ID>2</ID> <Name>張三</Name> <Sex>男</Sex> <Major>軟件工程</Major> </Student> <Student> <ID>3</ID> <Name>張三</Name> <Sex>男</Sex> <Major>軟件工程</Major> </Student> </Class>
創建帶屬性的XML文檔
代碼示例:
public void WriteXML() { SaveFileDialog sfd = new SaveFileDialog(); sfd.Filter = "xml文檔|*.xml"; //篩選器 if (sfd.ShowDialog() == DialogResult.OK) { XmlDocument doc = new XmlDocument(); string path = sfd.FileName; //獲取用戶文件保存的路徑 //創建xml文檔的聲明 doc.AppendChild(doc.CreateXmlDeclaration("1.0", "utf-8", "yes")); //創建xml文檔的根節點 XmlElement rootNode = doc.CreateElement("Inventory"); //Inventory(清單) //將根節點添加到xml文檔中 doc.AppendChild(rootNode); //創建子節點 XmlElement elementHandler = doc.CreateElement("Handler"); //Handler(處理者) elementHandler.InnerText = "沈婷婷"; //賦值 rootNode.AppendChild(elementHandler); //創建子節點 XmlElement elementDate = doc.CreateElement("Date"); //Date(日期) elementDate.InnerText = "2019-05-20"; //賦值 rootNode.AppendChild(elementDate); //創建子節點 XmlElement elementItems = doc.CreateElement("Items"); //創建子節點 XmlElement elementGoods_1 = doc.CreateElement("Goods"); //給節點添加屬性 elementGoods_1.SetAttribute("Name", "德芙巧克力"); elementGoods_1.SetAttribute("Price", "¥18.00"); elementGoods_1.SetAttribute("Count", "2"); elementItems.AppendChild(elementGoods_1); //創建子節點 XmlElement elementGoods_2 = doc.CreateElement("Goods"); //給節點添加屬性 elementGoods_2.SetAttribute("Name", "益力多"); elementGoods_2.SetAttribute("Price", "¥12.00"); elementGoods_2.SetAttribute("Count", "5"); elementItems.AppendChild(elementGoods_2); //創建子節點 XmlElement elementGoods_3 = doc.CreateElement("Goods"); //給節點添加屬性 elementGoods_3.SetAttribute("Name", "玫瑰鮮花"); elementGoods_3.SetAttribute("Price", "¥520.00"); elementGoods_3.SetAttribute("Count", "1"); elementItems.AppendChild(elementGoods_3); rootNode.AppendChild(elementItems); //保存 doc.Save(path); MessageBox.Show("XML文檔創建成功!"); } }
XML文檔內容如下:
<?xml version="1.0" encoding="utf-8" standalone="yes"?> <Inventory> <Handler>沈婷婷</Handler> <Date>2019-05-20</Date> <Items> <Goods Name="德芙巧克力" Price="¥18.00" Count="2" /> <Goods Name="益力多" Price="¥12.00" Count="5" /> <Goods Name="玫瑰鮮花" Price="¥520.00" Count="1" /> </Items> </Inventory>
讀取XML文檔
代碼示例:
public void ReadXML() { OpenFileDialog ofd = new OpenFileDialog(); //用 OpenFileDialog 類來打開文檔 ofd.Filter = "XML文件(*.xml)|*.xml"; //篩選文件類型 if (ofd.ShowDialog() == DialogResult.OK) //顯示對話框 判斷用戶是否點擊打開按鈕 { string path = ofd.FileName; //獲取文件路徑 XmlDocument doc = new XmlDocument(); //定義XML文檔對象 doc.Load(path); //加載文件 XmlNodeList nodeList = doc.SelectNodes("/Class/Student"); //選擇匹配 XPath 表達式的節點列表 if (nodeList.Count > 0) //獲取nodeList節點數,若節點數大于0,則說明有節點,反之則為無節點 { //方法一: foreach (XmlNode node in nodeList) { foreach (XmlNode item in node.ChildNodes) { MessageBox.Show(item.InnerText.ToString()); } } //方法二: //for (int i = 0; i < nodeList.Count; i++) //{ // XmlNode node = nodeList.Item(i); //把第i組節點賦值給node // for (int j = 0; j < node.ChildNodes.Count; j++) // { // MessageBox.Show(node.ChildNodes[j].InnerText.ToString()); //獲取單節點node下子節點的值 // } //} } else { MessageBox.Show("沒有在 '/Class/Student' 下獲取到節點", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error); } } }
讀取帶屬性的XML文檔
代碼示例:
public void ReadXML() { OpenFileDialog ofd = new OpenFileDialog(); //用 OpenFileDialog 類來打開文檔 ofd.Filter = "XML文件(*.xml)|*.xml"; //篩選文件類型 if (ofd.ShowDialog() == DialogResult.OK) //顯示對話框 判斷用戶是否點擊打開按鈕 { string path = ofd.FileName; //獲取文件路徑 XmlDocument doc = new XmlDocument(); //定義XML文檔對象 doc.Load(path); //加載文件 XmlNodeList nodeList = doc.SelectNodes("/Inventory/Items"); //選擇匹配 XPath 表達式的節點列表 if (nodeList.Count > 0) //獲取nodeList節點數,若節點數大于0,則說明有節點,反之則為無節點 { //方法一: foreach (XmlNode node in nodeList) { foreach (XmlNode item in node.ChildNodes) { MessageBox.Show(item.Attributes["Name"].Value + " \t " + item.Attributes["Price"].Value + " \t " + item.Attributes["Count"].Value); } } //方法二: //for (int i = 0; i < nodeList.Count; i++) //{ // XmlNode node = nodeList.Item(i); //把第i組節點賦值給node // for (int j = 0; j < node.ChildNodes.Count; j++) // { // MessageBox.Show(node.ChildNodes[j].Attributes["Name"].Value + " \t " + node.ChildNodes[j].Attributes["Price"].Value + " \t " + node.ChildNodes[j].Attributes["Count"].Value); // } //} } else { MessageBox.Show("沒有在 '/Inventory/Items' 下獲取到節點", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error); } } }
編輯XML文檔
代碼示例:
public void EditXML() { OpenFileDialog ofd = new OpenFileDialog(); //用 OpenFileDialog 類來打開文檔 ofd.Filter = "XML文件(*.xml)|*.xml"; //篩選文件類型 if (ofd.ShowDialog() == DialogResult.OK) //顯示對話框 判斷用戶是否點擊打開按鈕 { string path = ofd.FileName; //獲取文件路徑 XmlDocument doc = new XmlDocument(); //定義XML文檔對象 doc.Load(path); //加載文件 XmlNodeList nodeList = doc.SelectNodes("/Class/Student"); //選擇匹配 XPath 表達式的節點列表 if (nodeList.Count > 0) //獲取nodeList節點數,若節點數大于0,則說明有節點,反之則為無節點 { for (int i = 0; i < nodeList.Count; i++) { XmlNode node = nodeList.Item(i); //把第i組節點賦值給node for (int j = 0; j < node.ChildNodes.Count; j++) { node.ChildNodes[j].InnerText += i.ToString(); //重新賦值 } } doc.Save(path); MessageBox.Show("XML文檔編輯成功!"); } else { MessageBox.Show("沒有在 '/Class/Student' 下獲取到節點", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error); } } }
刪除XML節點
代碼示例:
public void DelXML() { OpenFileDialog ofd = new OpenFileDialog(); //用 OpenFileDialog 類來打開文檔 ofd.Filter = "XML文件(*.xml)|*.xml"; //篩選文件類型 if (ofd.ShowDialog() == DialogResult.OK) //顯示對話框 判斷用戶是否點擊打開按鈕 { string path = ofd.FileName; //獲取文件路徑 XmlDocument doc = new XmlDocument(); //定義XML文檔對象 doc.Load(path); //加載文件 XmlNodeList nodeList = doc.SelectNodes("/Class/Student"); //選擇匹配 XPath 表達式的節點列表 if (nodeList.Count > 0) //獲取nodeList節點數,若節點數大于0,則說明有節點,反之則為無節點 { for (int i = 0; i < nodeList.Count; i++) { XmlNode node = nodeList.Item(i); //把第i組節點賦值給node node.RemoveAll(); //移除當前所有子節點和屬性 //RemoveChild()移除指定子節點 //ReplaceChild()替換子節點 } doc.Save(path); MessageBox.Show("刪除Student下的子節點成功!"); } else { MessageBox.Show("沒有在 '/Class/Student' 下獲取到節點", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error); } } }
將數據庫表中的數據導出到XML文檔
代碼示例:
/// <summary> /// 將數據庫表中的數據導出到XML文檔 /// </summary> /// <param name="dt">數據</param> public void ExportXML(DataTable dt) { SaveFileDialog sfd = new SaveFileDialog(); sfd.Filter = "xml文檔|*.xml"; if (sfd.ShowDialog() == DialogResult.OK) { XmlDocument doc = new XmlDocument(); string path = sfd.FileName; //獲取文件保存的路徑 //創建xml文檔的聲明 doc.AppendChild(doc.CreateXmlDeclaration("1.0", "utf-8", "yes")); //創建xml文檔的根節點 XmlElement rootNode = doc.CreateElement("Class"); //將根節點添加到xml文檔中 doc.AppendChild(rootNode); for (int i = 0; i < dt.Rows.Count; i++) { //創建子節點 XmlElement childNode = doc.CreateElement("Target"); XmlElement element; for (int j = 0; j < dt.Columns.Count; j++) //循環表的列 { element = doc.CreateElement(dt.Columns[j].ToString().Trim()); //獲取表的該列數據 element.InnerText = dt.Rows[i][j].ToString().Trim(); childNode.AppendChild(element); } rootNode.AppendChild(childNode); } doc.Save(path); MessageBox.Show("XML文檔創建成功!"); } }
文章評論