gpt4 book ai didi

xml - 更改XML文件中的元素值

转载 作者:行者123 更新时间:2023-12-02 23:53:46 24 4
gpt4 key购买 nike

需要使用PowerShell在下面的XML中更改元素值的帮助:

<?xml version="1.0" encoding="ISO-8859-1"?>
<Root>
<Package>
<ID>001</ID>
<Quantity1>65465</Quantity1>
<Quantity2>CALC</Quantity2>
</Package>
<Package>
<ID>002</ID>
<Quantity1></Quantity1>
<Quantity2>1547625</Quantity2>
</Package>
</Root>

我需要遍历XML文件,然后
  • <Quantity1>剪切值,并在第一种情况下将其粘贴到<Quantity2>(ID:001)。
  • <Quantity2>剪切值,将其粘贴到<Quantity1>并在第二种情况下使<Quantity2>等于'CALC'(ID:002)。

  • 我已经试过这段代码:

    [XML]$XMLcontents = [XML](Get-Content $PathToTheFile)
    foreach ($i in $XMLcontents.SelectNodes('/Root/Package')) {
    $_.Quantity2 = $_.Quantity1
    }

    但出现以下错误:

    The property 'Quantity2' cannot be found on this object.



    如何正确引用节点 <Package>中的元素?

    最佳答案

    首先要回答失败的原因,是因为您应该在foreach中使用 $ _ 时使用 $ _

    OK首先通过声明对象使对象成为XML

    [xml]$XML = @"
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <Root>
    <Package>
    <ID>001</ID>
    <Quantity1>65465</Quantity1>
    <Quantity2>CALC</Quantity2>
    </Package>
    <Package>
    <ID>002</ID>
    <Quantity1></Quantity1>
    <Quantity2>1547625</Quantity2>
    </Package>
    </Root>
    "@

    然后我们将搜索每个包的根
    foreach($package in $XML.Root.Package){
    }

    收集值并切换它们
    $Q1 = $package.Quantity1
    $package.Quantity1 = $package.Quantity2
    $package.Quantity2 = $Q1

    完整脚本
    [xml]$XML = @"
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <Root>
    <Package>
    <ID>001</ID>
    <Quantity1>65465</Quantity1>
    <Quantity2>CALC</Quantity2>
    </Package>
    <Package>
    <ID>002</ID>
    <Quantity1></Quantity1>
    <Quantity2>1547625</Quantity2>
    </Package>
    </Root>
    "@

    foreach($package in $XML.Root.Package){
    $Q1 = $package.Quantity1
    $package.Quantity1 = $package.Quantity2
    $package.Quantity2 = $Q1
    }

    $XML.Root.Package

    如果您想使用SelectNodes,那么您也可以
    foreach ($i in $XML.SelectNodes('/Root/Package')) {
    $Q1 = $i.Quantity1
    $i.Quantity1 = $i.Quantity2
    $i.Quantity2 = $Q1
    }

    $XML.SelectNodes('/Root/Package')

    关于xml - 更改XML文件中的元素值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50993093/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com