【问题标题】:Include an / in my XML at the end of a line [duplicate]在我的 XML 中包含 / 在行尾 [重复]
【发布时间】:2016-08-11 21:49:28
【问题描述】:

我有一个看起来像这样的 XML 文件(我的文件中有很多文件标签):

<file
  name="YYY/xxxx/xyz/zyx.cs"
  count = '15'>
  <severity level="0" count="4"/>
  <severity level="2" count="11"/>
  <source  name="ReviewLinqMethodRule" count="1"/>
  <source  name="AvoidRepetitiveCallsToPropertiesRule" count="3"/>
  <source  name="AvoidUnnecessarySpecializationRule" count="3"/>
  <source  name="CheckParametersNullityInVisibleMethodsRule" count="4"/>
  <source  name="PreferEmptyInstanceOverNullRule" count="2"/>
  <source  name="AvoidRepetitiveCastsRule" count="2"/>
</file>

我想要一个搜索整个文件的 PowerShell 代码,每次找到 name= 时,应该将链接更改为完全相同,只是应该在末尾添加一个 /。 所以这个

name="YYY/xxxx/xyz/zyx.cs"

应该改成这个

name="YYY/xxxx/xyz/zyx.cs"

所以上面看起来像这样:

<file
  name="YYY/xxxx/xyz/zyx.cs/"
  count = '15'>
  <severity level="0" count="4"/>
  <severity level="2" count="11"/>
  <source  name="ReviewLinqMethodRule" count="1"/>
  <source  name="AvoidRepetitiveCallsToPropertiesRule" count="3"/>
  <source  name="AvoidUnnecessarySpecializationRule" count="3"/>
  <source  name="CheckParametersNullityInVisibleMethodsRule" count="4"/>
  <source  name="PreferEmptyInstanceOverNullRule" count="2"/>
  <source  name="AvoidRepetitiveCastsRule" count="2"/>
</file>

它需要遍历漏洞文件并查找所有name=。链接永远不会相同。

有没有简单的方法可以做到这一点?

到目前为止,我可以打印出每个元素:

[xml]$XML = Get-Content -Path violations.xml

foreach( $file in $XML.violations.type.file) 
{ 
Write-Host $file.name 
} 

【问题讨论】:

    标签: powershell


    【解决方案1】:

    这样的?

    [xml]$XML = Get-Content -Path $file_path
    $XML.file.name = $XML.file.name + "/"
    # then you can save it on the same file with
    $XML.Save($file_path)
    

    在 OP 的编辑之后。 您应该尝试使用regex,但这里是粗略的解决方案:

    $i = 0;
    $xml = Get-Content -Path $file_path
    foreach($line in $xml){
        if(($line -like "*name=*") -and ($line -like '*"*/*"*')){
           $temp += $line.Split('"')[0] + '"' + $line.Split('"')[1] + '/"'
        } else {
            $temp += $line
        }
        $i++
    }
    [xml]$xml = $temp
    

    【讨论】:

      猜你喜欢
      • 2012-11-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-01
      • 2012-07-29
      • 2018-08-02
      相关资源
      最近更新 更多