LinqToXML高级编程体验篇

【菜科解读】
首先,我们在Linq初级班 Linq To XML体验(基础)和Linq初级班 Linq To XML体验(编程篇)了解了一些XML的基本知识以及如何用LINQ to XML对XML文档进行简单的操作,本文将继续深入LINQ to XML,做一些高级编程的演示.我也是LINQ的初学者,文章中不免会有一些不对的地方,希望高手们多多指点,为我们LINQ初学者们多提宝贵的意见,我也会继续努力的,本文章目录如下所示:目录1.Linq to XML函数构造2.Linq to XML批注3.Linq to XML轴4.Linq to XML事件1.Linq to XML函数构造函数构造是指通过单个语句构建XML树的能力.在Linq初级班 Linq To XML体验(编程篇)中我们已经体验了如何使用XElement和XAttribute类手工创建XML树,也可以通过其他XElement和XAttribute对象传递给XElement类的构造函数来创建子元素和属性,也就是说,LINQ查询的结果可以用来创建XML树,下面就来看看一个演示:代码 //-----------------------------------------------------------// All Rights Reserved , Copyright (C) 2010 ,黄聪 , Ltd .//-----------------------------------------------------------using System;using System.Xml.Linq;using System.Linq;namespace ConsoleApplication1{ class Program { static void Main(string[] args) { XElement xel = new XElement(new XElement("Root", new XElement("Person", new XElement("Name", "Huang Cong"), new XElement("Sex", "男"), new XElement("Age", 22)), new XElement("Person", new XElement("Name", "Li Si"), new XElement("Sex", "女"), new XElement("Age", 12)) )); //通过LINQ查询将xel的元素添加至新的XElement中 XElement newXel = new XElement(new XElement("NewRoot", new XElement("Persons", xel.Elements().Where(u => u.Name == "Person").Select(u => u) ))); Console.WriteLine(newXel); } }}运行结果:
2.Linq to XML批注LINQ to XML批注是指将一个对象添加或关联到一个XML节点或者属性,批注可以是任何类型的任何对象,可以通过XElement或XAttribute类的AddAnnotation方法来添加批注,需要注意的是:当调用AddAnnotation方法时,是将一个新的对象添加至相应的元素或属性上,原先绑定的批注并不会被删除掉,如果想删除批注,可以调用RemoveAnnotations方法:代码 //-----------------------------------------------------------// All Rights Reserved , Copyright (C) 2010 ,黄聪 , Ltd .//-----------------------------------------------------------using System;using System.Xml.Linq;using System.Linq;namespace ConsoleApplication1{ class Program { public class Test { public int Id { get; set; } public string Info { get; set; } } static void Main(string[] args) { XElement xel = new XElement(new XElement("Root", new XElement("Person", "Huang Cong"))); //为元素添加2个批注 xel.Element("Person").AddAnnotation(new Test() { Id = 1, Info = "测试1" }); xel.Element("Person").AddAnnotation(new Test() { Id = 2, Info = "测试2" }); Console.WriteLine("为元素添加2个批注:"); var query = xel.Element("Person").Annotations().Select(u => u); foreach (var q in query) { Console.WriteLine(q.Info); } Console.WriteLine("-------------------------------------"); //删除所有批注 xel.Element("Person").RemoveAnnotations(); Console.WriteLine("删除所有批注:"); query = xel.Element("Person").Annotations().Select(u => u); foreach (var q in query) { Console.WriteLine(q.Info); } Console.WriteLine("-------------------------------------"); } }}运行结果:3.Linq to XML轴LINQ to XML提供了对XML的查询功能,以查找特定的元素或者属性并返回它们的值,LINQ to XML的轴方法让你可以轻松实现以上的功能,LINQ to XML还提供了返回个别节点的方法,这可以让开发人员处理更细粒度的细节.下面是几个主要的轴方法:1. Descendants和DescendantsAndSelf2. Ancestors和AncestorsAndSelf3. ElementsAfterSelf和ElementBeforeSelf下面分别给各个方法做示例讲解:3.1 Descendants和DescendantsAndSelfDescendants方法返回指定元素的后继元素的集合,不包括元素本身,而DescendantsAndSelf则包括元素本身.代码 //-----------------------------------------------------------// All Rights Reserved , Copyright (C) 2010 ,黄聪 , Ltd .//-----------------------------------------------------------using System;using System.Xml.Linq;using System.Linq;namespace ConsoleApplication1{ class Program { static void Main(string[] args) { XElement xel = new XElement(new XElement("Root", new XElement("Person", new XElement("Name", "Huang Cong"), new XElement("Age", 22)), new XElement("Person", new XElement("Name", "Li Si"), new XElement("Age", 12)) )); Console.WriteLine("遍历所有元素:"); var des = xel.Descendants(); foreach (var d in des) { Console.WriteLine(d); } Console.WriteLine("----------------------------------"); Console.WriteLine("遍历所有名称为Person的元素,不包括本身:"); des = xel.Descendants("Person").Descendants(); foreach (var d in des) { Console.WriteLine(d); } Console.WriteLine("----------------------------------"); Console.WriteLine("遍历所有名称为Person的元素,包括本身:"); des = xel.Descendants("Person").DescendantsAndSelf(); foreach (var d in des) { Console.WriteLine(d); } Console.WriteLine("----------------------------------"); } }}运行结果:3.2 Ancestors和AncestorsAndSelfAncestors方法返回指定节点的上级元素,不包括元素本身,而AncestorsAndSelf则包括元素本身.代码 //-----------------------------------------------------------// All Rights Reserved , Copyright (C) 2010 ,黄聪 , Ltd .//-----------------------------------------------------------using System;using System.Xml.Linq;using System.Linq;namespace ConsoleApplication1{ class Program { static void Main(string[] args) { XElement xel = new XElement(new XElement("Root", new XElement("Person", new XElement("Name", "Huang Cong")) )); Console.WriteLine("遍历所有元素:"); var des = xel.Descendants(); foreach (var d in des) { Console.WriteLine(d); } Console.WriteLine("----------------------------------"); Console.WriteLine("遍历所有名称为Name的元素的上级元素集合,不包括本身:"); des = xel.Element("Person").Element("Name").Ancestors(); foreach (var d in des) { Console.WriteLine(d); } Console.WriteLine("----------------------------------"); Console.WriteLine("遍历所有名称为Name的元素的上级元素集合,包括本身:"); des = xel.Element("Person").Element("Name").AncestorsAndSelf(); foreach (var d in des) { Console.WriteLine(d); } Console.WriteLine("----------------------------------"); } }}运行结果:3.3 ElementsAfterSelf和ElementBeforeSelfElementsAfterSelf方法和ElementBeforeSelf方法分别返回指定元素之后的元素和值指定元素之前的元素,也可以指定条件返回指定的元素集合.代码 //-----------------------------------------------------------// All Rights Reserved , Copyright (C) 2010 ,黄聪 , Ltd .//-----------------------------------------------------------using System;using System.Xml.Linq;using System.Linq;namespace ConsoleApplication1{ class Program { static void Main(string[] args) { XElement xel = new XElement(new XElement("Root", new XElement("Person", new XElement("Name", "Huang Cong"), new XElement("Sex","男"), new XElement("Age",12))) ); Console.WriteLine("获取Name元素之后的元素集合:"); var des = xel.Element("Person").Element("Name").ElementsAfterSelf(); foreach (var d in des) { Console.WriteLine(d); } Console.WriteLine("----------------------------------"); Console.WriteLine("获取Name元素之后的名为Sex的元素集合:"); des = xel.Element("Person").Element("Name").ElementsAfterSelf("Sex"); foreach (var d in des) { Console.WriteLine(d); } Console.WriteLine("----------------------------------"); Console.WriteLine("获取Age元素之前的元素集合:"); des = xel.Element("Person").Element("Age").ElementsBeforeSelf(); foreach (var d in des) { Console.WriteLine(d); } Console.WriteLine("----------------------------------"); Console.WriteLine("获取Age元素之前的名为Sex的元素集合:"); des = xel.Element("Person").Element("Age").ElementsBeforeSelf("Sex"); foreach (var d in des) { Console.WriteLine(d); } Console.WriteLine("----------------------------------"); } }}运行结果:4.Linq to XML事件在对XML树进行修改的时候,LINQ to XML事件会提供通知,LINQ to XML提供了2个事件来响应XML树的修改:Changing和Changed.当修改XML树时这2个时间会相继被触发.从运行结果我们可以看出,更新动作实际上是一个删除操作加上一个添加完成的:代码 //-----------------------------------------------------------// All Rights Reserved , Copyright (C) 2010 ,黄聪 , Ltd .//-----------------------------------------------------------using System;using System.Xml.Linq;using System.Linq;namespace ConsoleApplication1{ class Program { static void Main(string[] args) { XElement xel = new XElement(new XElement("Root", new XElement("Person", new XElement("Name", "Huang Cong"), new XElement("Sex","男"), new XElement("Age",12))) ); xel.Changing += new EventHandler(xel_Changing); xel.Changed += new EventHandler(xel_Changed); //修改Person元素的Age元素值 xel.Element("Person").SetElementValue("Age", 22); } static void xel_Changed(object sender, XObjectChangeEventArgs e) { Console.WriteLine("触发Changed事件:"); Console.WriteLine("ChangedValue:{0} \tObjectChange:{1}", ((XNode)sender).ToString(), e.ObjectChange); Console.WriteLine("------------------------------------"); } static void xel_Changing(object sender, XObjectChangeEventArgs e) { Console.WriteLine("触发Changing事件:"); Console.WriteLine("ChangingValue:{0} \tObjectChange:{1}", ((XNode)sender).ToString(), e.ObjectChange); Console.WriteLine("------------------------------------"); } }}运行结果:警告:不允许在被触发事件的执行过程中修改XML树,特别不要在事件中修改触发事件发生的节点,因为这会导致不可预测的结果.不过可以在事件中修改另外一个XML树.小结:LINQ to XML提供了大量方便的方法和接口给开发人员操作XML文档,这大大的提高了开发效率,希望本章的内容对你有所帮助哈,我也是LINQ的初学者,文章中不免会有一些不对的地方,希望高手们多多指点,为我们LINQ初学者们多提宝贵的意见,我也会继续努力的~~
LinqToXML,高级,编程,体验,篇,首先,我们,在,L历史僵尸的等级排名 最高级的僵尸
全世界乡村和农场已报告出数万起‘不明吸血物种’攻击牲口的事件是怎么回事?甚至有人认为“野人”就是黑僵;第三级:跳僵也称为跳尸是怎么回事?黑僵纳阴吸血再几十年是怎么回事?黑毛脱去是怎么回事?行动开始以跳为主是怎么回事?跳步较快而远是怎么回事?怕阳光是怎么回事?不怕人也不怕任何家畜 平时再能叫的狗是怎么回事?一旦遇到‘黑僵’或‘跳尸’就不叫了是怎么回事?但是猫见僵尸就会冷叫;第四级:飞僵也称为飞尸是怎么回事?由跳尸纳幽阴月华而演变是怎么回事?飞尸往往是百年以上甚至几百年的僵尸是怎么回事?行动敏捷是怎么回事?跃屋上树是怎么回事?纵跳如飞是怎么回事?吸食精魄而不留外伤;第五级:魃第五级僵尸已近乎魔是怎么回事?名为“魃”是怎么回事?又称“旱魃”“火魃”“干魃”是怎么回事?飞尸吸纳精魄数百年之后是怎么回事?相貌愈发狰狞是怎么回事?可谓青面獠牙啖人罗刹是怎么回事?还能变幻身形相貌迷惑众人是怎么回事?上能屠龙旱天下能引渡瘟神是怎么回事?旱天瘟疫由此而发 历史是怎么回事?瘟疫如果伴随着旱灾蔓延是怎么回事?老百姓们就会坚信不疑地认为是旱魃在作怪;第六级:犼最终一级也是最可怕的僵尸是怎么回事?应该说它已不再是“尸”是怎么回事?而是魔王是怎么回事?名为“犼”是怎么回事?拥有着与神叫阵的恐怖力量是怎么回事?数千年甚至万年的道行,袁枚《续子不语》更云僵尸可能化成犼:“常州蒋明府言:佛所骑之狮、象是怎么回事?人所知也;佛所骑之犼是怎么回事?人所不知是怎么回事?犼乃僵尸所变。
”僵尸尸变后是怎么回事?便会发出怪声哀号是怎么回事?三跃三跳是怎么回事?化作兽形而去。
故或曰:尸初变旱魃是怎么回事?再变即为犼。
犼有神通是怎么回事?口吐烟火是怎么回事?能与龙斗是怎么回事?故佛骑以镇压之。
关于僵尸的史书记载《僵尸》一词出于《大千录》是怎么回事?是道家的一本著作是怎么回事?僵尸的意思是:四肢僵硬是怎么回事?头不低。
眼不斜。
腿不分是怎么回事?尸体不腐烂。
僵尸之说盛行于明中叶以后及清朝。
清代笔记载僵尸者最多是怎么回事?首推袁枚的《子不语》及纪晓岚的《阅微草堂笔记》是怎么回事?此二书可以说是僵尸大全。
湘西赶尸之说是怎么回事?又称移灵是怎么回事?属茅山术祝由科是怎么回事?发源于湘西沅陵、泸溪、辰溪、溆浦四县是怎么回事?在尸体未腐化时由术士赶回乡安葬。
赶尸的术士大约三五同行是怎么回事?有的用绳系着尸体是怎么回事?每隔几尺一个是怎么回事?然后额上贴黄纸符是怎么回事?另外的便打锣响铃开路是怎么回事?划伏夜行。
天光前投栈是怎么回事?揭起符纸是怎么回事?尸靠墙而立是怎么回事?到夜间继续上路。
亦有人指赶尸者本来背起尸体而行是怎么回事?但由于身穿黑衣夜行是怎么回事?途人便自然看不见赶尸者是怎么回事?以为有行尸。
,
世界上最经典的骗术之一?世界上最高级骗术
这种骗术的核心就是利用人们贪小便宜的心理,通过各种手段让人上当受骗。
在我国历史上,就有这样一个骗子,他骗了上千人,最后被判死刑,这个人就是刘农军。
刘农军出生于河南省新乡市,小时候家里非常贫穷,父母为了生计常年在外打工工,所以刘农军从小就跟着爷爷奶奶生活。
一、有什么好看的骗局电影,经典高智商骗局电影,计中计?乌鸦的拇指(日) 偷天陷进(美) 最佳出价 (英) 目前就对这三部印象深点二、什么是庞氏骗局?著名的案例有哪些?优质答案1:庞氏骗局是对金融领域投资诈骗的称呼,之所以称之为庞氏骗局,是因为这种骗术是一个名叫查尔斯·庞兹的投机商人“发明”的。
庞氏骗局在中国又称“拆东墙补西墙”,“空手套白狼”。
在我国法律中,相关的罪名主要是集资诈骗。
集资诈骗,是指利用公众缺乏投资知识、盲目进行投资、渴望通过投机行为获得收益的心理,谎称虚构事实、隐瞒真相等方式,谎称存在投资项目或编造不真实的投资及收益渠道,让受害者上当,对其进行所谓的投资,然后用新受骗者的投资款来支付老投资人的收益,直到没有新的受骗者上当,导致无法支付全部老投资人的收益之后,面临崩盘之危。
一般来说,初期投资者确实能够拿到高收益,但那是因为还有新人不断进来补充资金支付收益,一个典型的庞氏骗局,不超过6个月就会崩盘,特殊的,规则设计更为精巧的,也有超过2年的。
优质答案2:百科:庞氏骗局是对金融领域投资诈骗的称呼,金字塔骗局(Pyramid scheme)的始祖,很多非法的传销集团就是用这一招聚敛钱财的,这种骗术是一个名叫查尔斯·庞兹的投机商人“发明”的。
庞氏骗局在中国又称“拆东墙补西墙”,“空手套白狼”。
简言之就是利用新投资人的钱来向老投资者支付利息和短期回报,以制造赚钱的假象进而骗取更多的投资。
查尔斯·庞兹(Charles Ponzi)是一位生活在19、20世纪的意大利裔投机商,1903年移民到美国,1919年他开始策划一个阴谋,骗子向一个事实上子虚乌有的企业投资,许诺投资者将在三个月内得到40%的利润回报,然后,狡猾的庞兹把新投资者的钱作为快速盈利付给最初投资的人,以诱使更多的人上当。
由于前期投资的人回报丰厚,庞兹成功地在七个月内吸引了三万名投资者,这场阴谋持续了一年之久,才让被利益冲昏头脑的人们清醒过来,后人称之为“庞氏骗局”。
1.泛亚事件泛亚事件发生在2011年,当时全球最大的稀有金属交易平台的泛亚交易所,开发了一款“日金宝”的理财产品:购买门槛是1000元,年化可达12.04%,收益日结,当天到账,拥有的注册会员高达22万人,融资超过430亿元,后来日金宝不能正常运行导致了泛亚交易所被迫关闭。
2、麦道夫诈骗案美国著名金融界经纪人伯纳德.麦道夫,是华尔街最受敬重的成功商人,曾任纳斯达克股票市场公司董事会主席,麦道夫诈骗案是庞氏骗局最经典的拆西墙补东墙的做法,此诈骗案实际损失高达500亿美元,2009年6月29日被纽约联邦法院判处150年有期徒刑。
能够把“庞氏骗局”说明白就够了 ,不必举例那么多。
三、人生听到的最残忍的一句话是什么?优质答案1:他用普京治好了我的抑郁症。
我在三十多岁的时候得了抑郁症,因为创业失败,亏了一点钱,身体又不好,治病也花了不少钱,然后工作也丢了,接着就整晚整晚失眠,一个人每晚站在阳台窗户那发呆,有时候很想跳下去,因为生活和工作的诸多事情都无法满意,各种困难堆积在一起让我无法解决。
我不知道未来在哪里,那时候我欠了很多钱,还没有了工作,父母也不理解,亲戚朋友看见我就躲,我记得有一天我向一个多年的好兄弟开口借钱,他实在没有办法,只好拉黑了我。
拉黑我之前,他说了一句话,这句话十分残忍,让我觉得当时特别恨他。
他说:你不要以为我们是兄弟,就要借钱给你,你自己没有好好过日子,为什么要兄弟给你背锅。
这句话刺激了我,当晚我喝了好多酒,坐在马路边上吐,吐完了一个人在深夜里不知道要怎么办。
我觉得我抬不起头来了,我无法再继续活下去了,以前我还觉得自己很有能力什么事情都可以搞得定,但是到那个时候,我才发现,这个世界真的属于我的,只有身边这瓶勇闯天涯的雪花了。
我长时间躺在床上,哪里都不想去,谁都不想见,有时候我会在亲人面前表现出癫狂的状态,我总觉得他们不懂我,什么都不知道不理解我,只是一味地希望我达到他们的要求。
我开始在无止境的烟酒里焚烧自己,直到自己变成一个自己看着都可怕的面容。
这样的日子过了大概一年多,那时候我已经极度憔悴落魄了。
好像一个没有了三魂七魄的人。
有一天,一个多年不见的老同学来找我,他和我曾经是一个寝室的上下铺,他睡上面,我睡下面,有时候晚上会聊天一阵才睡觉的那种。
他来看我,见我这个样子,根本没有露出任何惊奇的表情,好像我在他面前是一个正常人那样。
他说:你看起来精神还不错啊。
最近是不是没有出过门,所以不晒太阳是对的,皮肤保养的可以。
我苦笑着说:你别消遣我了,我现在这个样子,有什么可说的。
他说:我来了,你不请我喝杯茶吗?我就起身给他倒茶。
他拿起茶杯又夸我:“你泡茶的技术还是这么好!”我又笑:除了会泡茶,还能怎么样?他说:其实我挺羡慕你。
我很惊讶:你确定不是在奚落我?他说:我确定,我很羡慕你。
一个人如果在五十多岁的时候遇到了大风大浪,这个人一定撑不下去,因为留给他奋斗翻盘的机会不多了,时间不多了。
人活到了五十多才会明白,人的精华时间就那么十几二十年。
但是如果一个人在年轻的时候,把该遇到的困难,把要命的那种、锁喉的那种折腾,都经历过了,这个人是不是特别幸福呢?别人不相信,我却坚信这样的人会很幸福。
因为他提前收到了上帝给他的礼物。
我说:你信教的吗?他笑着说:阿门,我不信教,但是我信任我心里的上帝,我知道这个上帝不是万能的,但是没有他却是万万不能的。
没有这个上帝,你就会觉得自己一个人撑着这些破事儿,是你被命运在惩罚,你看不到,其实是上帝在考验你,你以为是他在折磨你,其实是他在帮你锤炼。
你本是钝铁,他要把你变成锐器。
所以一般的火光和温度、平凡的捶打和淬炼,都无法让你变成好东西。
只有憋大招,用大招对付你这样的天选之子,才是他唯一的选择。
他也没有办法,谁让你是天选之子呢?我一听,内心有一种温暖的力量开始流动起来,温暖了我一度冰冷的心。
他继续说:我说的上帝,当然不是宗教的上帝,我说的上帝,是你心里的上帝,是那个支撑你生命力量不断延续,主宰你命运的上帝,这个上帝和你是一体的,你怎样,他就怎样。
你颓废,他就颓废,你放弃,他就放弃,你崛起,他也崛起。
你就是他他就是你。
你现在不如意,他也不如意,但是他比你好的一点是,他比你活的明白。
他知道,当一个重大的重生机会来的时候,一定会伴随着地狱烈火般的煎烤,只有换一双慧眼,去看待这个煎烤,你才不至于被烤焦。
他知道,你烦恼和抑郁,是因为你在为没有发生的事情,和已经发生的事情,而纠结。
已经发生的,就让他过去吧,还没有发生的,就尽力去影响它的发生吧。
仅此而已!我说:你说的容易。
我恐怕是站不起来了!他说:一个人不该需要任何其他人的理解和支持,才能站起来,站起来需要靠自己,你要清楚地认知到,世界上没有人欠你什么?你看看普京,这样的男人才叫男人啊,没有人理解他 没有人可以安慰他,可是他却要独自面对大半个世界的敌视和围攻。
他曾经说过一句话:我偶尔也颓废,但从不装牛逼。
你看,他这种人也会颓废,所以颓废并不是什么大不了的事。
我们有权颓废有权抑郁,我们有权用一段时间来消沉和调整自己。
但是,只有你不依靠任何人对你的怜悯和理解以及支持,你就会惊叹你自己的能量。
其实你拥有非常大的能量。
你只是自己不觉得,因为你至少在这种非一般人忍受得了的折磨中,还在坚强活下去、你要知道,许多人遇到困难,直接就去结束生命了。
你的能量无与伦比,可以说,你比世界上任何人的能量都要大。
我说:我不太信你这话,我哪里来的能量?我知道你是在安慰我,但是我还是过不去这个坎。
他说:我不是来安慰你的,只有受到伤害的人需要安慰,在生活和命运里潮起潮落的勇士,是不需要安慰的,他们只是需要一点独自处理的时间,时间一到,马上苏醒,马上崛起,马上披荆斩棘,这本就是滚烫人生。
所以我羡慕你,能在三十几岁的时候,得到这样的锤炼,我不敢想象你在四十几岁五十几岁的时候,人生会有多么智慧多么圆融多么成熟多么幸福多么达观多么自在。
我不敢想啊,你看我,虽然我现在在认真上班,但是平平无奇碌碌无为,我十分担心我到了四五十岁,还要去面对恶劣的人生灾难。
我不知道我在年轻的时候没有经历过,到那个时候,怎么熬的过去。
我听他这样一说,觉得,内心的力量真的大了很多。
我寻思,可能是我自己在钻这些牛角尖吧。
他说:站起来吧,一点一点去改变,一点一点去拆好上帝给你的礼物,这个礼物我不小心偷看了一眼,我告诉你你会惊喜的,你会感恩不尽的,你会在风平浪静之后笑着感谢一切,你会对自己曾经藐视过自己惭愧,你会对自己曾经纠结过多觉得后悔。
他说完,拍拍我的肩,在桌上放下一万块现金,说道:兄弟,借你的,慢慢还,不能不还啊!加油。
就走了。
我看着他离开的背影,那句加油在我心里一直响,一直响,一直响,响声越来越大,越来越大,久久萦绕不散,直到现在。
希望这篇文章送给那些觉得人生残忍、命运造物弄人、抑郁不欢的朋友们!加油!!!!!优质答案2:我上学时候,在学校住宿,寝室有个女生,晚上别人都在睡觉,她在吹笛子,而且是刚学,吹得可难听。
我就很客气的跟她说太晚了,明天再吹吧,她就骂,妈了~你管老娘,她嘴可臭,骂了一句又一句,臭不可闻,我们家人都不好骂人。
我骂人的水平跟她差远了,所以败阵。
我们寝室人也都在看笑话,我就离开寝室,要回家,寝室有俩女生追了出去。
骂人的女生就恶狠狠的说,“追什么,死不了。
”后来,室友学给我,说她当时面目狰狞,妥妥的毒妇。
因为这次事,室友都开始远离她,有次我生病了寝室人帮我打饭,她就挖苦我说你看你多得劲,生病了还有人照顾你,故意的吧。
她的嘴贱引起了公愤,大家一块怼她,说她说的不是人话,她才闭上臭嘴。
同学跟我说她有次因为嘴臭吃了大亏,她去商店买东西,说把你们的几巴毛巾拿来瞧瞧,售货员是个四五十岁的女的,人家怼她你见过吧,她就跟人家对骂,人家两个妇女把她骂的嗷嗷哭。
大家都说她该,平时说话好带脏字,大家都不跟她计较,出了门没人惯她。