Xml
XmlTextReader 提供了只向前的、快速的、唯讀讀取xml內容,對於大於1M的xml經常採用它進行讀取,XmlTextReader.Create()載入xml檔案
XmlDocument 把xml內容讀取到記憶體當中,XmlDocument.Load()方法以共用讀的方式負載檔案
XDocument 是Linq to Xml採用的,跟XmlDocument相似,但效能方面比XmlDocument好
Linq to Xml 基本操作
//載入xml文檔
XDocument xDocument = XDocument.Load(Server.MapPath(@"test.xml"));
//得到根項目
XElement root = xDocument.Root;
//根據元素名擷取元素
XElement element = xDocument.Descendants("Class").First();
//根據元素屬性值擷取元素(要先判斷是否為null)
XElement element2 = xDocument.Descendants().First(m => m.Attribute("Name")!=null&&m.Attribute("Name").Value == "Computer");
//根據元素的值擷取元素
XElement element3 = xDocument.Descendants().First(m => m.Value == "Mr.Yang");
//根據元素名擷取某些元素
List<XElement> elements = xDocument.Descendants("Class").ToList();
//根據元素屬性值擷取某些元素(要先判斷是否為null)
List<XElement> elements2 = xDocument.Descendants().Where(m =>m.Attribute("Name")!=null&& m.Attribute("Name").Value == "Computer").ToList();
//根據元素的值擷取某些元素
List<XElement> elements3 = xDocument.Descendants().Where(m => m.Value == "Mr.Yang").ToList();
//元素不存在子項目則添加
element.SetElementValue("Code", "101");
//元素存在子項目則更新
element.SetElementValue("Teacher", "Miss Yang");
//刪除子項目
element.Element("Code").Remove();
//修改元素的值
element.Value = "abcdf";
//如果屬性存在則修改屬性值
element.SetAttributeValue("Name","English");
//如果屬性不存在則添加屬性
element.SetAttributeValue("Code","101");
//刪除屬
element.Attribute("Name").Remove();
//刪除元素
element.Remove();
//儲存修改到文檔
//xDocument.Save(Server.MapPath(@"test.xml"));
注意:Descendants 可遍曆某節點或文檔下的所有子節點,Elements 則是遍曆當前節點或文檔下一級的子節點