替换包含与号的 XML 节点中的文本



>我有一个PowerShell脚本,它试图用不同的值替换XML文件节点中的值。

例如,在SectorDesc节点中,将"&"替换为"and"。

<?xml version="1.0" encoding="UTF-8"?>
<OrganisationUnits>
  <OrganisationUnitsRow num="8">
    <OrganisationId>ACME24/7HOME</OrganisationId>
    <OrganisationName>ACME LTD</OrganisationName>
    <ContactDetails>
      <ContactDetailsRow num="1">
        <ContactCode>OFFICE</ContactCode>
      </ContactDetailsRow>
    </ContactDetails>
    <Sector>P</Sector>
    <SectorDesc>Private Private &amp; Voluntary</SectorDesc>
  </OrganisationUnitsRow>
</OrganisationUnits>

所以这条线

<SectorDesc>Private Private &amp; Voluntary</SectorDesc>

现在看起来像这样

<SectorDesc>Private Private and Voluntary</SectorDesc>

这是我到目前为止的代码。

$file = "C:Dumptesttest.xml"
$xml = [xml](Get-Content $file)
$xml.selectNodes('//SectorDesc/value[contains(.,"text")]')|
                ForEach-Object{$_.'#text' = ($_.'#text' -replace "&amp;","and") } 
$xml.Save("$File")

如果你像这样阅读 xml,&amp;就会被读取为&所以你必须替换&。此外,您可以像这样访问节点:

$xml.OrganisationUnits.OrganisationUnitsRow.SectorDesc = $xml.OrganisationUnits.OrganisationUnitsRow.SectorDesc -replace '&', 'and'

相关内容

  • 没有找到相关文章

最新更新