Linq To Xml

本文介绍了LinqToXML的基本概念及其在XML文件创建、检索和序列化中的应用。通过多个示例展示了如何使用LinqToXML进行XML数据的操作。

Linq To XMl

啥是Linq To Xml呢?

Linq To Xml就是通过Linq语句来快速检索Xml树或Xml文件,并从中获取相应的记录或对获取的记录进行相应的操作。用Linq来检索Xml文件比Xpath好用,用Linq来操作Xml文件比DOM好用。Linq To Xml 说白了就是XpathDOM的抽象,语法简单但功能却不简单。

废话不多说呀,咱来写几个案例。

案例1 如何使用Linq创建一个Xml文件

Xelement root=new Xelement(“Root”, New Xelement(“Child1”), New Xelement(“Child2”), New Xelement(“Child3”), New Xelement(“Child4”, New Xelement(“GrandChild1”), New Xelement(“GrandChild2”) )//child4 )//root Root.Save(“C:/MyTree.xml”);

只需这样,咱们就轻松的建立了一颗Xml树,它的结构如下:

<Root> <Child1></ Child1> <Child2></ Child2> <Child3></ Child3> <Child4> <GrandChild1></ GrandChild 1> <GrandChild2></ GrandChild 2> </ Child4> </Root>

如何用LinqXml树中获取相应的信息呢?接下来咱们对下面这颗xml数进行信息检索

<?xml version="1.0" encoding="utf-8"?> <MemoRoot> <Memo> <ID>41</ID> <MemoUser>ghostbear</MemoUser> <MemoContent>去家里洗澡燥</MemoContent> <MemoCreateTime>2011-02-13T20:31:45.453</MemoCreateTime> <MemoContentApplyTime>2011-02-14T00:00:00</MemoContentApplyTime> </Memo> <Memo> <ID>42</ID> <MemoUser>ghostbear</MemoUser> <MemoContent>去干洗店拿衣服</MemoContent> <MemoCreateTime>2011-02-13T20:32:06.203</MemoCreateTime> <MemoContentApplyTime>2011-02-14T00:00:00</MemoContentApplyTime> </Memo> <Memo> <ID>43</ID> <MemoUser>ghostbear</MemoUser> <MemoContent>回奶奶家继续研究Linq</MemoContent> <MemoCreateTime>2011-02-13T20:32:21.343</MemoCreateTime> <MemoContentApplyTime>2011-02-14T00:00:00</MemoContentApplyTime> </Memo> <Memo> <ID>44</ID> <MemoUser>ghostbear</MemoUser> <MemoContent>去姐姐家看望姐姐</MemoContent> <MemoCreateTime>2011-02-13T20:32:36.89</MemoCreateTime> <MemoContentApplyTime>2011-02-15T00:00:00</MemoContentApplyTime> </Memo> <Memo important=”true”> <ID>45</ID> <MemoUser>ghostbear</MemoUser> <MemoContent>打电话给中兴,说我不去培训</MemoContent> <MemoCreateTime>2011-02-13T20:33:11.39</MemoCreateTime> <MemoContentApplyTime>2011-02-14T00:00:00</MemoContentApplyTime> </Memo> <Memo> <ID>46</ID> <MemoUser>ghostbear</MemoUser> <MemoContent>去郭青店里玩玩</MemoContent> <MemoCreateTime>2011-02-13T20:33:39.563</MemoCreateTime> <MemoContentApplyTime>2011-02-16T00:00:00</MemoContentApplyTime> </Memo> <Memo> <ID>47</ID> <MemoUser>ghostbear</MemoUser> <MemoContent>去买19号的车票 </MemoContent> <MemoCreateTime>2011-02-13T20:34:50.64</MemoCreateTime> <MemoContentApplyTime>2011-02-17T00:00:00</MemoContentApplyTime> </Memo> <Memo> <ID>48</ID> <MemoUser>ghostbear</MemoUser> <MemoContent>回家呆呆</MemoContent> <MemoCreateTime>2011-02-13T20:35:13.907</MemoCreateTime> <MemoContentApplyTime>2011-02-18T00:00:00</MemoContentApplyTime> </Memo> <Memo> <ID>49</ID> <MemoUser>ghostbear</MemoUser> <MemoContent>坐车回学校咯</MemoContent> <MemoCreateTime>2011-02-13T20:35:28.407</MemoCreateTime> <MemoContentApplyTime>2011-02-19T00:00:00</MemoContentApplyTime> </Memo> <Memo important=”true”> <ID>50</ID> <MemoUser>ghostbear</MemoUser> <MemoContent>把存单给大姨</MemoContent> <MemoCreateTime>2011-02-17T13:56:20.827</MemoCreateTime> <MemoContentApplyTime>2011-02-18T00:00:00</MemoContentApplyTime> </Memo> </MemoRoot>

案例2 获取ID值介于40~45之间的Memo节点

Xelement root=Xelement.Load(“C:/MyTree.xml”); Var result=from memo in root.Descendants(“Memo”) Let id= int.parse(memo.Element(“ID”).Value) Where id>=40 && id<=45 Select memo Foreach(Xelement e in memo) Console.writeline(e.element(“ID”).Value+”/n”); 结果为: 41 42 43 44 45

案例3 获取属性Important=trueMemo节点

Xelement memo=Xelement.Load(“C:/MyTree.xml”); Var result=from m in memo.Descendants(“Memo”) Where m.Attribute[“important”]!=null && m.Attribute[“important”].Value==”true” Select m; Foreach(Xelement e in result) Console.WriteLine(e.Element(“ID”).Value); 结果为: 45 50

案例4 如何通过Linq使用节点的命名空间来检索信息

<?xml version="1.0" encoding="gb2312" ?> <root xmlns:bd="www.baidu.com" xmlns:gl="www.google.com"> <bd:website> <name>百度</name> <url>http://www.baidu.com</url> <port>80</port> </bd:website> <gl:website> <name>谷歌</name> <url>http://www.google.com</url> <port>80</port> </gl:website> <website> <name>搜狗</name> <url>http://www.sougou.com</url> <port>80</port> </website> </root>

咱们用这颗Xml树来测试

XElement myTree = XElement.Load("../../TestNamespace.xml"); var result1 = myTree.Descendants(XName.Get("website", "www.baidu.com")); var result2 = myTree.Descendants(XName.Get("website","www.google.com")); var result3 = myTree.Descendants("website"); foreach (XElement e in result1) { Console.WriteLine(e.Element("name").Value); } foreach (XElement e in result2) { Console.WriteLine(e.Element("name").Value); } foreach (XElement e in result3) { Console.WriteLine(e.Element("name").Value); } 结果为: 百度 谷歌 搜狗

案例5 Xml文件的序列化

Xml文件的序列化可以让文件更小,传输更便捷。咱们用案例1的Xml树来操作。 Xelement root=new Xelement(“Root”, New Xelement(“Child1”), New Xelement(“Child2”), New Xelement(“Child3”), New Xelement(“Child4”, New Xelement(“GrandChild1”), New Xelement(“GrandChild2”) )//child4 )//root Root.Save(“C:/MyTree.xml”,SaveOptions.DisableFormatting);

需求响应动态冰蓄冷系统与需求响应策略的优化研究(Matlab代码实现)内容概要:本文围绕需求响应动态冰蓄冷系统及其优化策略展开研究,结合Matlab代码实现,探讨了在电力需求侧管理背景下,冰蓄冷系统如何通过优化运行策略参与需求响应,以实现削峰填谷、降低用电成本和提升能源利用效率的目标。研究内容包括系统建模、负荷预测、优化算法设计(如智能优化算法)以及多场景仿真验证,重点分析不同需求响应机制下系统的经济性和运行特性,并通过Matlab编程实现模型求解与结果可视化,为实际工程应用提供理论支持和技术路径。; 适合人群:具备一定电力系统、能源工程或自动化背景的研究生、科研人员及从事综合能源系统优化工作的工程师;熟悉Matlab编程且对需求响应、储能优化等领域感兴趣的技术人员。; 使用场景及目标:①用于高校科研中关于冰蓄冷系统与需求响应协同优化的课题研究;②支撑企业开展楼宇能源管理系统、智慧园区调度平台的设计与仿真;③为政策制定者评估需求响应措施的有效性提供量化分析工具。; 阅读建议:建议读者结合文中Matlab代码逐段理解模型构建与算法实现过程,重点关注目标函数设定、约束条件处理及优化结果分析部分,同时可拓展应用其他智能算法进行对比实验,加深对系统优化机制的理解。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值