C#基礎13(xml檔案的CRUD)
XML檔案(CRUD) 可擴充套件標記語言,標準通用標記語言的子集,是一種用於標記電子檔案使其具有結構性的標記語言。 1.可擴充套件標記語言是一種很像超文字標記語言的標記語言。 2.它的設計宗旨是傳輸資料,而不是顯示資料。 3.它的標籤沒有被預定義。您需要自行定義標籤。 4.它被設計為具有自我描述性。 5.它是W3C的推薦標準。
XML格式:
<?xml version="1.0" encoding="utf-8" ?> 張三 18 湖南長沙1.<?xml version="1.0" encoding="utf-8" ?> ?XML標記說明它是一個XML文件,version為版本號,encoding屬性表明是編碼格式為”utf-8”,standalone取”yes”時,表明該檔案未引用其它外部檔案。
2. 每個文件必須有有一個根元素,沒有根元素將會在解析的時候出現錯誤
3. id屬於當前Student節點的屬性而值是1
4.XML註釋 < !–註釋內容–>
XML結構列表: XmlDocument XML文件 XmlNode XML中單個的節點,如 XmlAttribute XML元素中的屬性 XmlText 表示元素或屬性的文字內容 XmlElement 最小元素,如張三 XmlComment 表示XML註釋的內容 XmlDeclaration XML文件第一行的宣告
常用物件屬性及方法:
1.XmlDocument物件:主要是針對節點的CUID操作 DocumentElement 屬性 獲取文件的根 ChildNodes 屬性 獲取節點的所有子節點 Name 屬性 獲取節點的限定名稱 Value 屬性 獲取或設定節點的值 Load() 方法 載入整個XML的結構 CreateAttribute 方法 建立具有指定Name的屬性 Save() 方法 將XML文件儲存到指定的位置 CreateXmlDeclaration 方法 建立一個具有指定值的XmlDeclaration節點 AppendChild 方法 將指定的節點新增到該節點的子節點列表的末尾。
2.XmlNode物件:為抽象類,做為以上兩類的基類,提供一些操作節點的方法 InnerText 屬性 當前節點的值 Name 屬性 當前節點的名字 ChildNodes 屬性 當前節點的所有子節點 CreateNode 方法 建立一個新的節點 RemoveAll 方法 移除當前節點的所有子節點和/或屬性
3.XmlElement物件:主要是針對節點的一些屬性進行操作 SelectSingleNode 方法 選擇匹配XPath表示式的第一個XmlNode SelectNode 方法 選擇匹配XPath表示式的XMLNode集合
xml檔案:
<?xml version="1.0" encoding="utf-8" ?>
<!--根節點-->
<Persons>
<!--子節點-->
<Person>
<Name>張三</Name>
<Age>18</Age>
<Sex>男</Sex>
</Person>
</Persons>
測試類:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml;
namespace base13
{
class Program
{
static void Main(string[] args)
{
#region 獲取子節點
XmlDocument xmld = new XmlDocument();
//載入.xml檔案
xmld.Load("XML1.xml");
//獲取根節點
XmlElement root = xmld.DocumentElement;
//Console.WriteLine(root.ChildNodes.Count);
//Console.WriteLine(root.Name);
//遍歷當前節點的所有子節點
foreach (XmlNode xd in root.ChildNodes)
{
if (xd.NodeType != XmlNodeType.Comment)//判讀是否為註釋
{
//遍歷當前節點的子節點
foreach (XmlNode cxd in xd.ChildNodes)
{
Console.WriteLine(cxd.Name);
}
}
}
#endregion
#region 增加節點
//XmlDocument xmld = new XmlDocument();
////載入.xml檔案
//xmld.Load("XML1.xml");
////獲取根節點
//XmlElement root = xmld.DocumentElement;
////建立Person節點
//XmlElement personxe = xmld.CreateElement("Person");
////建立Name節點
//XmlElement namexe = xmld.CreateElement("Name");
////給Name節點賦值
//namexe.InnerText = "李四";
////把Name節點放入Person節點
//personxe.AppendChild(namexe);
////建立Age節點
//XmlElement agexe = xmld.CreateElement("Age");
////給Age節點賦值
//agexe.InnerText = "19";
////把Age節點放入Person節點
//personxe.AppendChild(agexe);
////建立Sex節點
//XmlElement sexxe = xmld.CreateElement("Sex");
////給Sex節點賦值
//sexxe.InnerText = "女";
////把Sex節點放入Person節點
//personxe.AppendChild(sexxe);
////儲存到Persons根節點中
//root.AppendChild(personxe);
////檔案儲存
//xmld.Save("XML1.xml");
////遍歷當前節點的所有子節點
//foreach (XmlNode xd in root.ChildNodes)
//{
// if (xd.NodeType != XmlNodeType.Comment)//判讀是否為註釋
// {
// //遍歷當前節點的子節點
// foreach (XmlNode cxd in xd.ChildNodes)
// {
// Console.WriteLine(cxd.Name);
// }
// }
//}
#endregion
#region 修改
//XmlDocument xmld = new XmlDocument();
////載入.xml檔案
//xmld.Load("XML1.xml");
////獲取根節點
//XmlElement root = xmld.DocumentElement;
//bool flag = false;
//foreach (XmlNode xd in root.ChildNodes)
//{
// //不等於回車跟空格
// if (xd.NodeType != XmlNodeType.Comment && xd.NodeType != XmlNodeType.Whitespace)
// {
// XmlNodeList xmlist = xd.ChildNodes;
// if (xmlist.Count > 0)
// {
// foreach (XmlNode cxd in xmlist)
// {
// if (cxd.Name.Equals("Name"))
// {
// if (cxd.InnerText.Equals("張三"))
// {
// flag = true;
// }
// }
// if (flag)
// {
// if (cxd.Name.Equals("Age"))
// {
// cxd.InnerText = "20";
// break;
// }
// }
// }
// }
// }
//}
//xmld.Save("XML1.xml");
//foreach (XmlNode xd in root.ChildNodes)
//{
// if (xd.NodeType != XmlNodeType.Comment)//判讀是否為註釋
// {
// //遍歷當前節點的子節點
// foreach (XmlNode cxd in xd.ChildNodes)
// {
// Console.WriteLine(cxd.Name);
// }
// }
//}
#endregion
#region 刪除
//XmlDocument xmld = new XmlDocument();
////載入.xml檔案
//xmld.Load("XML1.xml");
////獲取根節點
//XmlElement root = xmld.DocumentElement;
//foreach (XmlNode xd in root.ChildNodes)
//{
// //不等於回車跟空格 ChildNodes屬性 當前節點的所有子節點
// if (xd.NodeType != XmlNodeType.Comment && xd.NodeType != XmlNodeType.Whitespace)
// {
// foreach (XmlNode cxd in xd.ChildNodes)
// {
// if (cxd.InnerText.Equals("李四"))
// {
// cxd.ParentNode.RemoveAll();
// root.RemoveChild(cxd);
// }
// }
// }
//}
//xmld.Save("XML1.xml");
#endregion
#region 節點
//新增屬性
//XmlDocument xmld = new XmlDocument();
//xmld.Load("XML1.xml");
//XmlElement root= xmld.DocumentElement;
//新增屬性
//root.SetAttribute("id","1");
//xmld.Save("XML1.xml");
////改
////if (root.GetAttribute("id")!=null)
////{
//// root.SetAttribute("id","20");
////}
////刪除
//root.RemoveAllAttributes();//刪除所有
//root.RemoveAttribute("c");
////查詢
//Console.WriteLine(root.GetAttribute("id"));
//xmld.Save("XML1.xml");//儲存
#endregion
}
}
}