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


    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");
  • 相关阅读:
    August 4th, 2016, Week 32nd, Thursday
    August 3rd, 2016, Week 32nd, Wednesday
    Java的垃圾回收机制
    学java入门到精通,不得不看的15本书
    java中set和get方法的理解
    eclipse快捷键
    main方法无法编译
    Java构造器和方法的区别
    交换两个变量的值,不使用第三个变量
    计算圆周率 Pi (π)值, 精确到小数点后 10000 位 只需要 30 多句代码
  • 原文地址:https://www.cnblogs.com/jams742003/p/1629508.html
Copyright © 2020-2023  润新知