【问题标题】:Replace '.00' to blank value in xml with powershell用 powershell 将 '.00' 替换为 xml 中的空白值
【发布时间】:2021-01-19 06:45:53
【问题描述】:

我有一个带有标签的 xml 文件。 但是,标签中的值以某种方式显示为 111.01.00,然后我想删除 .00。 我试图替换功能,但它似乎打印到 powershell 屏幕而不是保存虽然我已经有保存功能 这是我的代码:

param ($folder = 'C:\Users\blitz\Desktop\Baiduri\CR\new_xml_format')
$files = Get-ChildItem -Path $folder -Include "*xml" -Recurse
foreach ($file in $files) {
[xml]$xml = Get-Content $file
$xml.SelectNodes('//*[self::balance]') |
    ForEach-Object { $_.'#text' -replace '.00',''} 
$xml.Save($file)
}

【问题讨论】:

    标签: xml powershell powershell-4.0


    【解决方案1】:

    您正在替换文本,但实际上并没有对它做任何事情。使用结果设置项目。

    param ($folder = 'C:\Users\blitz\Desktop\Baiduri\CR\new_xml_format')
    $files = Get-ChildItem -Path $folder -Include "*xml" -Recurse
    foreach ($file in $files) {
    [xml]$xml = Get-Content $file
    $xml.SelectNodes('//*[self::balance]') |
        ForEach-Object { $_.'#text' = $_.'#text' -replace '.00',''} 
    $xml.Save($file)
    }
    

    当你用什么都没有替换某些东西时,你可以省略 ,'' 并将其改为

    $_.'#text' = $_.'#text' -replace '.00'
    

    【讨论】:

    • 顺便说一句,我使用相同的方式将空节点替换为 0,但它不起作用。 ForEach-Object { $_.'#text' = $_.'#text' -replace '`0','0'} 你能帮忙改正吗...
    • 0前面的`是什么?
    • 据我了解。 0 表示折线。
    • 我的节点喜欢,那么我想改成0
    【解决方案2】:

    实际上,@DougMaurer 没问题,但我们这里不需要 Regex,-replace 使用 Regex 和 . Bears 对 Regex 有意义(匹配任何字符)。然后改成:

    $_.'#text'.replace(".00","")
    

    【讨论】:

      猜你喜欢
      • 2018-06-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-06
      • 2014-02-26
      • 2013-11-04
      相关资源
      最近更新 更多