asp. net Linq to Xml study notes

  • 2020-05-09 18:24:57
  • OfStack

In addition, I have learned Linq to Entity before, so I can follow my own heart when learning.
Here is some of the code at the bottom of the project. Make a note, and it would be great if you could help the novice learn Linq to Xml
XML file format:
 
<?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 add, delete, change, check
 
private string docName = string.Empty;// Profile path  
#region ISystemModuleConfigService  Members of the  
/// <summary> 
///  add  
/// </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> 
///  Modify the  
/// </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> 
///  delete  
/// </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> 
///  Get a list of  
/// </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> 
///  To obtain 1 article ChildSystem data  
/// </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> 
///  loading Config file  
/// </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> 
///  validation Name=name the ChildSystem Does the data exist  
/// </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; 
} 

Related articles: