按给定分数一次更改多个项目值

问题描述 投票:0回答:1

我必须管理电子目录,并且需要更改其价格值 按我的供应商给出的原始值的百分比。

xml 文件具有这种结构,但长度超过 1000 项:

<E_CATALOG>

<item>      
<MATERIAL_NUM>000000000000004720</MATERIAL_NUM>
<MATERIAL_DESCR>ΑΝΑΛΩΣ HP INK NO 45 BLACK 42ML</MATERIAL_DESCR>
<EAN_UPC>88698603659</EAN_UPC>
<PART_NUMBER>51645AE</PART_NUMBER>
<SUPPLIER>HP</SUPPLIER>
<CATEGORY>Αναλώσιμα</CATEGORY>
<SUBCATEGORY>Μελάνια</SUBCATEGORY>
<IMAGE_URL>~/getmetafile/483396b2-38ea-4cb1-9856-877dc0b3b066/product-4720-main.aspx</IMAGE_URL>
<PRICE>65.05</PRICE>
<ATP_QUANTITY>0</ATP_QUANTITY>
</item>

<item>
<MATERIAL_NUM>000000000000008879</MATERIAL_NUM>
<MATERIAL_DESCR>ΑΝΑΛΩΣ  EPSON A4 PAPER PHOTO MATT 100SH</MATERIAL_DESCR>
<EAN_UPC>10343812017</EAN_UPC>
<PART_NUMBER>C13S041061</PART_NUMBER>
<SUPPLIER>EPSON</SUPPLIER>
<CATEGORY>Είδη γραφείου</CATEGORY>
<SUBCATEGORY>Χαρτικά Αναλώσιμα</SUBCATEGORY>
<IMAGE_URL>~/getmetafile/65f7ee5b-7ad7-43e8-a476-896c72dff8c4/product-8879-main.aspx</IMAGE_URL>
<PRICE>18.10</PRICE>
<ATP_QUANTITY>6</ATP_QUANTITY>
</item>

<item>
<MATERIAL_NUM>000000000000010228</MATERIAL_NUM>
<MATERIAL_DESCR>ΑΝΑΛΩΣ EPSON RIBBON BLACK C13S015022</MATERIAL_DESCR>
<EAN_UPC>10343600447</EAN_UPC>
<PART_NUMBER>C13S015022</PART_NUMBER>
<SUPPLIER>EPSON</SUPPLIER>
<CATEGORY>Αναλώσιμα</CATEGORY>
<SUBCATEGORY>Μελανοταινίες</SUBCATEGORY>
<IMAGE_URL>~/getmetafile/c2c00f78-b088-4690-8143-33f4fb4233f5/product-10228-main.aspx</IMAGE_URL>
<PRICE>9.05</PRICE>
<ATP_QUANTITY>0</ATP_QUANTITY>
</item>

</E_CATALOG>

我尝试了一些在网上找到的针对不同项目的建议,但方法有些相似。 到目前为止还没有运气。使用记事本++

python xml math price logistics
1个回答
0
投票

他是一个可以工作的powershell脚本

using assembly System.Xml.Linq

$inputFilename = 'c:\temp\test.xml'
$outputFilename = 'c:\temp\test1.xml'
$doc = [System.Xml.Linq.XDocument]::Load($inputFilename)

$multiplier = [decimal]0.50
$prices = $doc.Descendants('PRICE')
foreach($price in $prices)
{
   $price.Value = $multiplier * [decimal]$price.Value
}
$doc.Save($outputFilename)
© www.soinside.com 2019 - 2024. All rights reserved.