2017-05-11 5 views
2

XMLファイルノードの値を別の値に置き換えようとしているPowerShellスクリプトがあります。XMLノードのテキストをアンパサンドで置き換えます

例:SectorDescノード内では、 '&'を 'と'で置き換えます。

<?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> 

woudlは今、この

<SectorDesc>Private Private and Voluntary</SectorDesc> 

ように見えるこれは、これまでの私のコードです。

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

$xml.Save("$File") 

答えて

3

あなたはこの&amp;ようなXMLを読んでいるかのようにちょうど&ので、あなたは&のために交換する必要が読まれます。また、あなたはこのようにノードにアクセスすることができます:XMLのインポートされるアプリケーションがそれを扱うことができないので、

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

私は別の文字と&を交換したい理由があります。私はそれが有効なXMLであることを知っているが、アプリケーションはそれを取ることはありません、なぜいくつかの変換作業が必要です。 私は提案したようにコードを試しましたが、&が使用されているときには置き換えを実行しません。 – zoomzoomvince

+0

& –

関連する問題