Linq to XML 增删改查
??
Linq to XML 增删改查2011-10-09 21:12:35|分类:.Net(C#)|标签:linqxmlxdocumentxelement|举报|字号大中小订阅
Linq to XML同样是对原C#访问XML文件的方法的封装,简化了用xpath进行xml的查询以及增加,修改,删除xml元素的操作。
C#访问XML文件的常用类:XmlDocument,XmlElement,XmlAttribute,XmlNode,XmlText等; Linq to XML 中的常用类 :XDocument,XElement,XAttribute。 废话不多说了,直接上代码: xml文件数据格式如下 publicclassDataBaseInfo { publicstring ID {get; set; } publicstring Company {get;set; } publicstring Server {get;set; } publicstring DataBase {get;set; } publicstring UserName {get;set; } publicstring Password {get;set; }
privatestaticXDocument doc =new XDocument(); publicstaticstring filePath =".DataBaseInfo.xml";
public DataBaseInfo() { doc =XDocument.Load(filePath); } public DataBaseInfo(string filepath):this() { filePath = filepath; }
///<summary> ///增 ///</summary> ///<returns></returns> publicbool Add() { XElement db =new XElement("DataBase", newXAttribute("id",ID), newXElement("company",newXAttribute("value",Company)), newXElement("server",Server)), newXElement("database",DataBase)), newXElement("username",UserName)), newXElement("password",Password)) ); try { //用XElement的Add方法 //XElement doc = XElement.Load(filePath); //doc.Add(db);
//用XDocument的Add方法 doc.Element("DataBases").Add(db); doc.Save(filePath); returntrue; } catch { returnfalse; } } ///<summary> ///删 ///</summary> ///<param name="id"></param> ///<returns></returns> publicstaticbool Remove(string id) { XElement xe = (from dbin doc.Element("DataBases").Elements("DataBase")where db.Attribute("id").Value == idselect db).Single() asXElement; try { xe.Remove(); doc.Save(filePath); returntrue; } catch { returnfalse;
}
} ///<summary> ///改 ///</summary> ///<returns></returns> publicbool Modify() { XElement xe = (from dbin doc.Element("DataBases").Elements("DataBase")where db.Attribute("id").Value.ToString() == IDselect db).Single(); try { xe.Element("company").Attribute("value").Value = Company; xe.Element("server").Attribute("value").Value = Server; xe.Element("database").Attribute("value").Value = DataBase; xe.Element("username").Attribute("value").Value = UserName; xe.Element("password").Attribute("value").Value = Password; doc.Save(filePath); returntrue; } catch { returnfalse; }
} ///<summary> ///查 ///</summary> ///<returns></returns> publicList<DataBaseInfo> GetAll() {
List<DataBaseInfo> dbs = (from dbin doc.Element("DataBases").Elements("DataBase") selectnewDataBaseInfo { ID = db.Attribute("id").Value.ToString(), Company = db.Element("company").Attribute("value").Value.ToString(), Server = db.Element("server").Attribute("value").Value.ToString(), DataBase = db.Element("database").Attribute("value").Value.ToString(), UserName = db.Element("username").Attribute("value").Value.ToString(), Password = db.Element("password").Attribute("value").Value.ToString()
}).ToList(); return dbs; } 怎么样,如何对之前DOM方式访问XML熟悉的话, 是不是发现简单了不少呢?xml文件如下:<?xml version="1.0" encoding="UTF-8"?> }
获取元素属性有两个方法,XElement.Attribute() 和XElement.Attributes() 简单举个例就知道了
输出 type="Author" experience="first-time" 那么往元素上加属性有如下方法 XElement.Add() XElement.AddFirst() XElement.AddBeforeThis() XElement.AddAfterThis() 删除元素属性有如下方法 XAttribute.Remove() 更新元素属性是这样的 XElement.Attribute("someattribute").Value = "beginner" 同样的属性也有XElement.SetAttributeValue() 方法 用起来和XElement.SetElementValue是一样的,这里不举例了
??
??
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |