asp.net Linq to Xml学习笔记

 更新时间:2010年03月11日 22:04:23   作者:   我要评论
之前都没有学习过关于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;
}

相关文章

  • .NET Core 2.2新增的部分功能使用尝鲜指南

    .NET Core 2.2新增的部分功能使用尝鲜指南

    这篇文章主要给大家介绍了关于.NET Core 2.2新增的部分功能使用的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起看看吧
    2018-12-12
  • asp.net+xml+flash实现的图片展示效果示例

    asp.net+xml+flash实现的图片展示效果示例

    这篇文章主要介绍了asp.net+xml+flash实现的图片展示效果的方法,结合实例形式较为详细的分析了图片展示效果的相关操作步骤与flash与xml调用的相关技巧,需要的朋友可以参考下
    2016-08-08
  • .NET Core利用skiasharp文字头像生成方法教程(基于docker发布)

    .NET Core利用skiasharp文字头像生成方法教程(基于docker发布)

    这篇文章主要给大家介绍了关于.NET Core利用skiasharp文字头像生成(基于docker发布)的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
    2018-03-03
  • ASP.NET 程序优化 小结

    ASP.NET 程序优化 小结

    asp.net开发中,需要注意程序的优化,下面的整理的一些,大家可以补充下。
    2009-08-08
  • 将.aspx转换为.htm的两种方法

    将.aspx转换为.htm的两种方法

    这篇文章介绍了将.aspx转换为.htm的两种方法,有需要的朋友可以参考一下,希望对你有所帮助
    2013-07-07
  • JAVA正则表达式 Pattern和Matcher

    JAVA正则表达式 Pattern和Matcher

    java.util.regex是一个用正则表达式所订制的模式来对字符串进行匹配工作的类库包。
    2009-04-04
  • asp.net 动态输出透明gif图片

    asp.net 动态输出透明gif图片

    要使用asp.net动态输出透明gif图片,也就是用Response.ContentType = "image/GIF"。
    2009-12-12
  • ASP.NET中保护自定义的服务器控件

    ASP.NET中保护自定义的服务器控件

    本文提供了针对自定义服务器控件的用户和开发人员的基本安全准则。适合初学者,希望对你有帮助,一起来看。
    2015-10-10
  • 浅谈ASP.NET常用数据绑定控件优劣总结

    浅谈ASP.NET常用数据绑定控件优劣总结

    这篇文章主要介绍了浅谈ASP.NET常用数据绑定控件优劣总结,以便在实际的开发中选用合适的控件进行数据绑定,以提高开发效率。
    2016-12-12
  • asp.net Gridview行绑定事件新体会

    asp.net Gridview行绑定事件新体会

    最近在做GridView中某一列的加总值,之前有在RowDataBound事件中中逐笔加总,经过测试才知道,这是不正确的,并不能得到所有资料的加总值。
    2009-11-11

最新评论