VB.net中的XML编辑

时间:2012-04-22 17:03:27

标签: xml vb.net

在尝试编辑vb中的xml文件之后,有两个问题出现了问题,我试着找到答案,但是那些没有按预期工作,我想要实现的是那些具有负面的transport_orders,替换正值的负值。请记住,值是一个带有2位小数的数字,它的正数值保持相同的格式。

源xml如下所示:

<transport_orders>
<transport_order>
<id>NOCCO/12-006798_1</id>
<order_number>NOCCO/12-006798_1</order_number>
<order_date>2012-03-30</order_date>
<contactId>C04396</contactId>
<productId>0103-01101025</productId>
<sum>3135.51</sum>
<currency_code></currency_code>
<reference>NOCCO/12-006798</reference>
<amounts>
<amount>
<unit_code>kg</unit_code>
<value>-324.00</value>
</amount>
</amounts>
<pickup_task>
<addressid>BUCU</addressid>
<task_window>
<from_instant>2012-04-20T18:26:43</from_instant>
<till_instant>2012-04-20T18:26:43</till_instant>
</task_window>
</pickup_task>
<delivery_task>
<addressid>C04396_1</addressid>
<task_window>
<from_instant>2012-04-23T00:00:00</from_instant>
<till_instant>2012-04-24T00:00:00</till_instant>
</task_window>
</delivery_task>
</transport_order>
<transport_order>
...
  1. 我所尝试的是下面的代码,但我想我错过了一些东西,因为值是一个带有2位小数的数字,而我得到的唯一结果是324而得到32400

    element.Element(“amount”)。元素(“金额”)。元素(“值”)。十进制(“n2”)= - 元素。元素(“金额”)。元素(“金额”)。元素( “值”)。值

  2. 如何从2012-04-20T18:26:43只更换日期或仅仅是开胃菜,例如我想编辑取件任务的时间窗口 - 从发货日期开始,以及日期为dilivery的日期任务时间窗口直到即时,但保持时间(小时,分钟,秒)不变。

  3. 感谢。

1 个答案:

答案 0 :(得分:1)

    Dim doc = <transport_orders>
                  <transport_order>
                      (...)
                  </transport_order>
              </transport_orders>

    Dim culture = New CultureInfo("en")

    Dim negativeAmmounts = (From item In doc.Descendants("value")
                           Let value = Double.Parse(item.Value, culture)
                           Where value < 0
                           Select New With {
                               .Item = item,
                               .Value = value
                           }).ToList()

    negativeAmmounts.ForEach(Sub(e) e.Item.Value = -1 * e.Value)

之后,您可以检查是否所有值都被替换,例如将整个文档打印成字符串:

    Dim outerXml = doc.ToString()