服务器之家:专注于服务器技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

asp.net Linq to Xml学习笔记

2019-07-22 11:11ASP.NET之家 ASP.NET教程

之前都没有学习过关于XML文件的操作,由于最近开发的项目需要用到,开始时学习了原始的XML文件操作方法,看了半天,也看的头晕眼花,没学习到真正的用法,后来在同事的推荐下学习了Linq to Xml

加上之前学习过Linq to Entity,因此学习起来也比较随心应手。 
以下是项目中某个底层的代码,记下做个备忘,如果能给新手学习Linq to Xml带来帮助,那就再好不过了 
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增,删,改,查 

复制代码代码如下:


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; 

延伸 · 阅读

精彩推荐