- 浏览: 1487897 次
- 性别:
- 来自: 杭州
文章分类
- 全部博客 (525)
- SEO (16)
- JAVA-EE-Hibernate (6)
- JAVA-EE-Struts (29)
- JAVA-EE-Spring (15)
- Linux (37)
- JAVA-SE (29)
- NetWork (1)
- CMS (14)
- Semantic Research (3)
- RIA-Flex (0)
- Ajax-Extjs (4)
- Ajax-Jquery (1)
- www.godaddy.com (0)
- SSH (34)
- JavaScript (6)
- SoftwareEngineer (9)
- CMMI (0)
- IDE-Myeclipse (3)
- PHP (1)
- Algorithm (3)
- C/C++ (18)
- Concept&Items (2)
- Useful WebSite (1)
- ApacheServer (2)
- CodeReading (1)
- Socket (2)
- UML (10)
- PowerDesigner (1)
- Repository (19)
- MySQL (3)
- SqlServer (0)
- Society (1)
- Tomcat (7)
- WebService (5)
- JBoss (1)
- FCKeditor (1)
- PS/DW/CD/FW (0)
- DesignPattern (11)
- WebSite_Security (1)
- WordPress (5)
- WebConstruction (3)
- XML|XSD (7)
- Android (0)
- Project-In-Action (9)
- DatabaseDesign (3)
- taglib (7)
- DIV+CSS (10)
- Silverlight (52)
- JSON (7)
- VC++ (8)
- C# (8)
- LINQ (1)
- WCF&SOA (5)
- .NET (20)
- SOA (1)
- Mashup (2)
- RegEx (6)
- Psychology (5)
- Stock (1)
- Google (2)
- Interview (4)
- HTML5 (1)
- Marketing (4)
- Vaadin (2)
- Agile (2)
- Apache-common (6)
- ANTLR (0)
- REST (1)
- HtmlAnalysis (18)
- csv-export (3)
- Nucth (3)
- Xpath (1)
- Velocity (6)
- ASP.NET (9)
- Product (2)
- CSS (1)
最新评论
-
lt26w:
理解成门面模式应该比较容易明白吧
FacadePattern-Java代码实例讲解 -
lt26w:
看下面的例子比较明白.
FacadePattern-Java代码实例讲解 -
javaloverkehui:
这也叫文档,别逗我行吗,也就自己看看。
HtmlCleaner API -
SE_XiaoFeng:
至少也应该写个注释吧。
HtmlCleaner API -
jfzshandong:
...
org.springframework.web.filter.CharacterEncodingFilter 配置
最近忽然想把过去写的IPMSG更新一下,把聊天记录部分改用linq实现,感觉确实比DOM直观多了,写下来希望对新手有帮助,linq to XML 所用的类都封装在System.Xml.Linq下,下面的例子还会需要System.Linq
首先创建log文件
string strNow = DateTime.Now.ToString("yyyyMMddhhmmss"
);
FileInfo fiXML = new FileInfo(@"XML\xmlLog.xml"
);
//如果文件不存在
if (!(fiXML.Exists))
{
//创建xml文档
XDocument xelLog =new XDocument(
new XDeclaration("1.0"
, "utf-8"
, "no"
),
new XElement("ipmsg"
,
new XElement("msg_log"
,
new XElement("user"
, "Bin"
),
new XElement("logdate"
, strNow),
new XElement("message"
, "一条xml linq测试"
)
)
)
);
xelLog.Save(@"XML\xmlLog.xml"
);
}
如果要给元素加属性用XAttribute,和子节点一起做参数传进去,比如在这里我们想给每条聊天记录都加一个ID:
new XAttribute(
"logid"
, "00001"
),
输出文档如下:
<?xml version="1.0"
encoding="utf-8"
standalone="no"
?>
<netmsg>
<msg_log logid="00001"
>
<user>Bin
</user>
<logdate>20081217090733
</logdate>
<message>一条xml linq测试
</message>
</msg_log>
</netmsg>
当然也可以用元素的形式表示ID,个人习惯问题,属性和元素功能基本是一样的,可以互相转换。
一、检索记录
首先要有检索功能,查看全部聊天记录:
Array queryXML = LinqHeper.getXmlLOGInFo();
返回Array,自己随意处理,比如:
dgvStudent.DataSource = queryXML;
下面是getXmlLOGInFo方法:
//实例化XMLog
XElement xelem = XElement.Load(@"XML\xmlLog.xml");
//执行linq检索(xmlLOG)
var queryXML = from xmlLog in xelem.Descendants("msg_log"
)
//条件都加在这里,注意条件用双等,多条件用 && 连接
//用户名是Bin的所有记录
//where xmlLog.Element("user").Value == "Bin"
select new {
用户名 = xmlLog.Element("user"
).Value.ToUpper()
, 时间 = xmlLog.Element("logdate"
).Value
, 消息 = xmlLog.Element("message"
).Value
};
return queryXML.ToArray();
上边的语句也可以写成lambda表达式的形式(其实就是"=>"前是参数,后面是返回值)
var queryXML = xelem.Descendants("msg_log"
)
.Where(x =>( x.Element("logid"
).Value == "1334255"
&& x.Element("user"
).Value == "bin"
))
.Select(x => new {
用户名 = x.Element("user"
).Value.ToUpper()
, 时间 = x.Element("logdate"
).Value
, 消息 = x.Element("message"
).Value });
不过还是比较推荐前面写的方法,比较直观,方便维护(在这个例子中lambda表达式没有很大优势,一般情况,还是可以减少很多代码的)
注:如果想分页就用Skip与Take方法,比如queryXML.Skip(45).Take(15)就是第四页(我没有用dgv)
二、添加记录
下面需要用到System.Collections.Generic
strNow = DateTime.Now.ToString("yyyyMMddhhmmss"
);
Dictionary<string,string> dicLog = new Dictionary<string,string>();
dicLog.Add("user"
, "Bin"
);
dicLog.Add("logdate"
, strNow);
dicLog.Add("message"
, "这是一条添加记录测试"
);
LinqHeper.insLog(dicLog);
insLog方法:
//实例化XMLog
XElement xelem = XElement.Load(@"XML\xmlLog.xml"
);
//执行linq添加(xmlLOG)
XElement newLog = new XElement("msg_log"
,
new XElement("user"
, (string)dicLog["user"
]),
new XElement("logdate"
, (string)dicLog["logdate"
]),
new XElement("message"
, (string)dicLog["message"
])
);
xelem.Add(newLog);
//保存xml
xelem.Save(@"XML\xmlLog.xml"
);
三、修改记录
如果一个朋友换了一个用户名,我们希望可以把他现在和过去的聊天记录在一起显示,就要把过去的名字全换成现在的新名,例子:
var queryXML = from xmlLog in xelem.Descendants("msg_log"
)
//所有名字为Bin的记录
where xmlLog.Element("user"
).Value == "Bin"
select xmlLog;
foreach (XElement el in queryXML)
{
el.Element("user"
).Value = "LiuBin"
;//开始修改
}
四、删除记录
。。这种软件应该没有必要删除聊天记录,但是既然标题是增查删改,就硬加上了,如果觉得记录占的地方太大了,我们想把2008年1月1日(或1个月前)以前的记录全部删除,就用如下方法:
//实例化XMLog
XElement xelem = XElement.Load(@"XML\xmlLog.xml"
);
var queryXML = from xmlLog in xelem.Descendants("msg_log"
)
where Convert.ToInt32(xmlLog.Element("logdate"
).Value) < 20080101010101
select xmlLog;
queryXML.Remove();
xelem.Save(@"XML\xmlLog.xml"
);
发表评论
-
WPF/Silverlight深度解决方案:(六)HLSL自定义渲染特效之完美攻略(上)
2010-01-13 16:40 2329Shader Effect 中文名称为“渲染特效”或“滤镜” ... -
Silverlight Image Source URI : 一个反斜杠引发的血案
2010-01-12 13:10 3540Silverlight Image Source U ... -
SilverLight跨域访问及其常用的几种解决方法
2010-01-06 16:59 5402SilverLight 出于对安全性的考虑默认情况下对UR ... -
有关silverlight中调用webservice的问题!!
2010-01-06 15:07 3246System.InvalidOperationExceptio ... -
Server.UrlEncode、HttpUtility.UrlDecode不同编码
2010-01-06 12:39 3207Server.UrlEncode、HttpUtility.U ... -
LINQ to XML一些基本查询
2010-01-06 12:34 2002/**/ /// /根据元素的名称进行筛选(有命名空 ... -
使用LINQ to XML来查询XML
2010-01-06 12:16 2721使用LINQ to XML来查询XML ... -
给弟弟起步学习软件开发(.Net 方向)的指导,博友们帮助看看,提些意见给他。
2010-01-06 11:15 923在我学习的时候走了至少3年的弯路,那个时候没有人告诉我该如 ... -
LINQ to XML 用 LINQ 查询 XML
2010-01-06 11:15 1480LINQ to XML 用 LINQ 查询 XML ... -
使用XML LINQ查询和转换XML
2010-01-06 10:37 1471本章包括 n XML LI ... -
XML LINQ简介
2010-01-06 10:32 1512本章包括 n XML LINQ ... -
.Net 中string与byte[]相互转换
2010-01-05 16:43 2356public static byt ... -
正则表达式收集(持久更新)
2010-01-04 15:56 1074正则表达式收集( ... -
网上搜集的webbrower的资料,很有借鉴价值
2010-01-04 15:54 1868http://hi.baidu.com/lovemoe/ ... -
Lexware Assembly Reference Tool for Visual Studio 2005 / 2008
2010-01-04 10:35 1835http://www.codeproject.com/KB/m ... -
Visual Studio的 诡异bug(mscorlib无法引用)
2010-01-04 09:27 2469这个需要手动修改项目的配置文件 添加 <Re ... -
[C#实战]Google Map开发实战参考
2010-01-03 16:48 5736[C# 实战] ... -
复习一下 .Net: delegate(委托)、event(事件) 的基础知识,从头到尾实现事件!
2010-01-02 23:33 2534有这样一道 .Net/C# 面试题:请以事件的概念实现 ... -
ADO.NET Entity Framework简介
2009-12-21 18:46 2656下一代的ADO.NET的目标是要解决关系数据模型和实际应用程序 ...
相关推荐
简单的linq to xml实例,测试过,可运行
LINQ TO SQL ,LINQ TO XML,LINQ中文教程,是强人书写的,制作有点粗糙,但是,是好教材
LINQ TO XML操作示例 轻轻松松 学会简单操作 本例子包含了通过LINQ创建XML、加载XML、读取XML、修改XML元素、属性、删除XML元素节点、属性,XML排序,保存XML等 基本上XML的操作都包含在这里面了。 适合学习LINQ...
学习LINQ的目前国内现有的最好的资源,有LINQ to xml的精讲,LINQ 的初级,高级学习,是学习LINQ的好资源。
LINQ To Xml示例程序
Linq to xml,读取XMl节点值,linq,读取XMl节点值绑定。
使用Linq To XML操作XML.pdf 中文电子文档
LINQ to XML操作XML的代码,通过它很快掌握用内存在对象方式操作XML数据
LinQ增删改查LinQ增删改查LinQ增删改查LinQ增删改查
ASP.NET MVC Linq to SQL 实现数据库增删改(源代码)ASP.NET MVC Linq to SQL 实现数据库增删改(源代码) ASP.NET MVC 分页控件
本书部分介绍了LINQ技术及C#和VB为此提供的新语言特性,第二、三、四部分详细介绍了LINQ的主要功能LINQ to Objects、LINQ to SQL、LINQ to XML,第五部分研究了LINQ的可扩展性、在应用程序中使用各种LINQ功能的方法...
示例描述:本章介绍LINQ to XML相关技术和使用。 CreateSimpleXMLTree 演示通过XElement创建简单的XML树。 CreateAttributeElement 演示通过XElement创建具有属性的XML元素。 CreateSubElement 演示通过...
Linq 大全 Linq To Sql Linq To DataSet Linq To Object Linq to Xml
linq to xml入门的例
留言薄,使用LINQ TO SQL 开发,供大家了解LINQ TO SQL
实现linq多个查询条件连接功能(支持linq to sql 和linq to entity)。 按多个指定属性排序功能。 不同参数的lamdba表达式条件间的转换功能。
Linq开发宝典 LInq入门宝典 Linq To Xml linq to sql
linq to sql 详细的增删改查代码供大家下载
网上一大堆旧版的XmlHelper,用的实在是不爽,今天发布 Linq to Xml 操作帮助类,新技术,简易操作,说明详细,值得收藏!
LINQ操作XML,对XML的基本操作,包括创建XML、查询、修改、删除等