asp.net Linq to Xml学习笔记
asp.net Linq to Xml学习笔记
发布时间:2016-12-29 来源:查字典编辑
摘要:加上之前学习过LinqtoEntity,因此学习起来也比较随心应手。以下是项目中某个底层的代码,记下做个备忘,如果能给新手学习LinqtoX...

加上之前学习过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;

}

推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
相关阅读
网友关注
最新asp.net教程学习
热门asp.net教程学习
编程开发子分类