Linq to XML说法——(二)更新,删除,加载

简介: Xml操作 场景:产品采购单。 描述:产品采购单用于描述产品的采购,它可以从各地进行采购,且每地可以采购多种商品。地址信息包括:城市,电话,联系人,日期,商品;商品包括0到多项,商品包括:产品名称,编号,描述,单价,采购总量。

Xml操作

场景:产品采购单。

描述:产品采购单用于描述产品的采购,它可以从各地进行采购,且每地可以采购多种商品。地址信息包括:城市,电话,联系人,日期,商品;商品包括0到多项,商品包括:产品名称,编号,描述,单价,采购总量。+

<? xml version="1.0" encoding="utf-8" standalone="no" ?>
< purchaseOrder >
  
< address >
    
< city > 石家庄 </ city >
    
< call > 88888888 </ call >
    
< contact > 暂无联系方式 </ contact >
    
< opdate > 2009-12-21 </ opdate >
    
< products >
      
< product >
        
< name > 产品4 </ name >
        
< num > C004 </ num >
        
< price > 66 </ price >
        
< total > 27 </ total >
        
< description > 产品4 </ description >
      
</ product >
      
< product >
        
< name > 产品1 </ name >
        
< num > B001 </ num >
        
< price > 12 </ price >
        
< total > 20 </ total >
        
< description > 产品1描述 </ description >
      
</ product >
      
< product >
        
< name > 产品2 </ name >
        
< num > B002 </ num >
        
< price > 16 </ price >
        
< total > 22 </ total >
        
< description > 产品2描述 </ description >
      
</ product >
      
< product >
        
< name > 产品3 </ name >
        
< num > C003 </ num >
        
< price > 18 </ price >
        
< total > 108 </ total >
        
< description > 产品3 </ description >
      
</ product >
    
</ products >
  
</ address >
</ purchaseOrder >

 

(一)更新

产品列表

//这个列表如下:

            /************************************************

            Name  num     price       total       description

           

            产品4 C004    66          27           产品4

            产品1 B001    12          20        产品1描述

            产品2 B002    16          22           产品2描述

            产品3 C003    18      108         产品3

            **************************************************/

采购单查询产品后,可以得到类似的一个产品列表。对照这个列表来进行查询可以更好的助于理解。

现在更新产品描述为产品3”的产品的单价(price),由18降低到17

// 更新描述是"产品3"的产品,使它的单价由18降到17
var willUpdateProduct  =  from q  in  productList
       
where  ( string )q.Element( " description " ==   " 产品3 "
       select q;

XElement nowele 
=  willUpdateProduct.First < XElement > ();
nowele.Element(
" price " ).SetValue( 17 );

 

说明:查询结果返回的应该是一个结果集,即使是聚合方法返回的也是一个结果集,只是结果集大多情况下只有一条而已。同理,对于linq to xml查询,返回的也是一个结果集。(说明一下,这里说是结果集,可能不严谨,暂且这样理解吧。)productList是什么?

var productList  =  from q  in  doc.Root.Element( " address " )
                               .Element(
" products " )
                               .Elements(
" product "
                  select q;

productList是一个结果集,这个集合又是doc中的所有的product节点,对于对象来说,这个集是一个如产品列表一样的列表,唯有不同的是一个做为节点的元素来说的,而后一个则做为产品实体的属性来说的。

willUpdateProduct也是一个集,因为它是在产品集中进行检索,而检索的结果就是一个产品集,但对于linqtoxml来说,这个集是一个Xelement的集合。这里它检索的条件为产品描述为产品3”,它返回的结果只有一条,所以nowele就得到了这个对象,而这个对象就是Xelement类型。

然后通过SetValue方法来设定(更新)price的值。

(二)删除

在以上基础上,来删除这个元素(产品:产品3

nowele.Remove();

(三)加载doc文档

XDocument _doc  =  XDocument.Load( " source/PurchaseOrder.xml " );

 

博客园大道至简

http://www.cnblogs.com/jams742003/

转载请注明:博客园

目录
相关文章
|
6月前
|
数据采集 存储 运维
无头浏览器与请求签名技术
本文分享了在面对Cloudflare防护(如Amazon网站)时,如何通过无头浏览器、请求签名技术和爬虫代理IP实现数据采集的故障排查与改进方案。首先,介绍了从常规请求失败到引入Selenium无头浏览器的过程,解决了Cookie和User-Agent检测问题。接着,通过生成请求签名绕过二次验证,并利用代理IP规避访问风险。最后,提出了架构改进方案,包括无头浏览器集群化、签名算法优化、代理池管理和多层次容错机制,以提高系统的稳定性和扩展性。示例代码展示了如何设置代理、获取Cookie并生成签名,成功采集商品信息。
201 6
无头浏览器与请求签名技术
|
监控 安全 C#
attempt to write a readonly database错误的解决(C#,SQLite)
今天打包WPF程序,安装后总是打不开,查看监控日志原来是SQLite的问题,报错如图     当向SQLite数据库中存入新纪录时总是显示attempt to write a readonly a database。
3545 0
|
8月前
|
存储 算法 C语言
【C语言程序设计——函数】素数判定(头歌实践教学平台习题)【合集】
本内容介绍了编写一个判断素数的子函数的任务,涵盖循环控制与跳转语句、算术运算符(%)、以及素数的概念。任务要求在主函数中输入整数并输出是否为素数的信息。相关知识包括 `for` 和 `while` 循环、`break` 和 `continue` 语句、取余运算符 `%` 的使用及素数定义、分布规律和应用场景。编程要求根据提示补充代码,测试说明提供了输入输出示例,最后给出通关代码和测试结果。 任务核心:编写判断素数的子函数并在主函数中调用,涉及循环结构和条件判断。
377 23
|
8月前
|
Linux 网络性能优化 网络安全
Linux(openwrt)下iptables+tc工具实现网络流量限速控制(QoS)
通过以上步骤,您可以在Linux(OpenWrt)系统中使用iptables和tc工具实现网络流量限速控制(QoS)。这种方法灵活且功能强大,可以帮助管理员有效管理网络带宽,确保关键业务的网络性能。希望本文能够为您提供有价值的参考。
1212 28
|
9月前
|
人工智能 Linux API
PromptWizard:微软开源 AI 提示词自动化优化框架,能够迭代优化提示指令和上下文示例,提升 LLMs 特定任务的表现
PromptWizard 是微软开源的 AI 提示词自动化优化框架,通过自我演变和自我适应机制,迭代优化提示指令和上下文示例,提升大型语言模型(LLMs)在特定任务中的表现。本文详细介绍了 PromptWizard 的主要功能、技术原理以及如何运行该框架。
757 8
PromptWizard:微软开源 AI 提示词自动化优化框架,能够迭代优化提示指令和上下文示例,提升 LLMs 特定任务的表现
|
7月前
|
网络安全 开发工具 git
解决 Git 访问 GitHub 时的 SSL 错误
通过上述步骤,可以有效解决 Git 访问 GitHub 时的 SSL 错误。推荐优先更新 CA 证书和正确配置 Git 使用 CA 证书,避免禁用 SSL 验证。如果问题持续,可以切换到 SSH 方式访问 GitHub,确保连接的安全性和稳定性。希望这些内容对您的学习和工作有所帮助。
2067 4
|
10月前
|
运维 监控 安全
堡垒机是用来干什么的?堡垒机的好处有什么?
堡垒机能保障网络和数据不受来自外部和内部用户的入侵和破坏,运用各种技术手段实时收集和监控网络环境。
1042 1
|
调度 决策智能
基于条件风险价值CVaR的微网动态定价与调度策略(matlab代码)
基于条件风险价值CVaR的微网动态定价与调度策略(matlab代码)
|
XML Java C++
【Spring系列】Sping VS Sping Boot区别与联系
【4月更文挑战第2天】Spring系列第一课:Spring Boot 能力介绍及简单实践
337 0
【Spring系列】Sping VS Sping Boot区别与联系
|
缓存 监控 网络协议
网工必备网络排错管理工具之IP_MAC地址工具
网工必备网络排错管理工具之IP_MAC地址工具
703 0
网工必备网络排错管理工具之IP_MAC地址工具