加上之前学习过Linq to Entity,因此学习起来也比较随心应手。 以下是项目中某个底层的代码,记下做个备忘,如果能给新手学习Linq to Xml带来帮助,那就再好不过了
我的个人项目IC网,共同学习吧 XML文件的格式: 复制代码 代码如下: <?xml version="1.0" encoding="utf-8"?> <configuration> <OPsystemConfig> <MemberCenter> <DomainName>DomainName</DomainName> <ProtocolName>ProtocolName</ProtocolName> <APIKey>APIKey</APIKey> <AESKey>AESKey</AESKey> <AESVI>AESVI</AESVI> </MemberCenter> <ChildSystems> <ChildSystem> <Name>Content</Name> <ControllerName>ContentManager</ControllerName> </ChildSystem> <ChildSystem> <Name>Image</Name> <ControllerName>ImageManager</ControllerName> </ChildSystem> <ChildSystem> <Name>Comment</Name> <ControllerName>CommentManager</ControllerName> </ChildSystem> <ChildSystem> <Name>Vote</Name> <ControllerName>VoteManager</ControllerName> </ChildSystem> </ChildSystems> </OPsystemConfig> </configuration>
XML增,删,改,查
IC做这个站时有用到删除复制代码 代码如下: private string docName = string.Empty;//配置文件路径 #region ISystemModuleConfigService 成员 /// <summary> /// 添加 /// </summary> /// <param name="name"></param> /// <param name="controllerName"></param> /// <returns></returns> public bool Add(string name, string controllerName) { XDocument xDoc = Load(docName); if (IsExist(name)) { xDoc.Element("configuration").Element("OPsystemConfig").Element("ChildSystems").Add(new XElement("ChildSystem", new XElement("Name",name), new XElement("ControllerName",controllerName))); xDoc.Save(docName); return true; } return false; } /// <summary> /// 修改 /// </summary> /// <param name="name"></param> /// <param name="controllerName"></param> /// <returns></returns> public bool Modify(string name, string controllerName) { XDocument xDoc = Load(docName); if (!IsExist(name)) { var query = from Opsystem in xDoc.Descendants("ChildSystem") where Opsystem.Element("Name").Value == name select Opsystem; foreach (XElement item in query) { item.Element("ControllerName").Value = controllerName; } xDoc.Save(docName); return true; } return false; } /// <summary> /// 删除 /// </summary> /// <param name="name"></param> /// <returns></returns> public bool Remove(string name) { XDocument xDoc = Load(docName); if (!IsExist(name)) { var query = from Opsystem in xDoc.Descendants("ChildSystem") where Opsystem.Element("Name").Value == name select Opsystem; query.Remove(); xDoc.Save(docName); return true; } return false; } /// <summary> /// 获得列表 /// </summary> /// <returns></returns> public IList<SystemModuleConfig> GetList() { XDocument xDoc = Load(docName); List<SystemModuleConfig> list = new List<SystemModuleConfig>(); var query = from Opsystem in xDoc.Descendants("ChildSystem") select new { Key = Opsystem.Element("Name").Value, Value = Opsystem.Element("ControllerName").Value }; foreach (var item in query) { SystemModuleConfig config = new SystemModuleConfig(); config.Name = item.Key; config.ControllerName = item.Value; list.Add(config); } return list; } /// <summary> /// 获得一条ChildSystem数据 /// </summary> /// <param name="name"></param> /// <returns></returns> public SystemModuleConfig GetModel(string name) { XDocument xDoc = Load(docName); SystemModuleConfig model = new SystemModuleConfig(); var query = from Opsystem in xDoc.Descendants("ChildSystem") where Opsystem.Element("Name").Value == name select new { Name = Opsystem.Element("Name").Value, ControllerName = Opsystem.Element("ControllerName").Value }; foreach (var item in query) { model.Name = item.Name; model.ControllerName = item.ControllerName; } return model; } /// <summary> /// 加载Config文件 /// </summary> /// <param name="path"></param> /// <returns></returns> public XDocument Load(string path) { docName = path; FileInfo file = new FileInfo(docName); file.IsReadOnly = false; return XDocument.Load(docName); } /// <summary> /// 验证Name=name的ChildSystem数据是否存在 /// </summary> /// <param name="name"></param> /// <returns></returns> private bool IsExist(string name) { XDocument xDoc = Load(docName); var query = from Opsystem in xDoc.Descendants("ChildSystem") where Opsystem.Element("Name").Value == name select new { Name = Opsystem.Element("Name").Value }; if (query.Count() == 0) { return true; } return false; }
|
请发表评论