でXMLノードを更新し、私は私が更新する必要があり、私のXML文書内の次のXMLノードがあります。以下では検索とPowerShellの
<ImageUrl>xxx.xxx.com/imageeditor/X.jpg</ImageUrl>
を:
<ImageUrl>xxx.xxx.com/image/getdvimage/X/1/false/200/200/</ImageUrl>
「X」で最初の文字列は数値(たとえば9808)であり、2番目のノードでは「X」の位置にある必要があります。これは、ドキュメント内のImageUrlという唯一のノードであり、この方法でドキュメント全体を更新する必要があります。だから私は、ノード内のXを見つけて、更新されたノードのXで置き換えてファイルを保存するのを助ける必要があります。私は新しい文字列に挿入するモデル番号を引くことができれば{0}
私はないでしょう
<Product>
<ExternalId>2127</ExternalId>
<Name>test</Name>
<Description>
<![CDATA[
desc
]]></Description>
<BrandExternalId>xxx</BrandExternalId>
<CategoryExternalId>Foo</CategoryExternalId>
<ProductPageUrl><![CDATA[xxx.com/2127]]></ProductPageUrl>
<ImageUrl>xxx.com/imageeditor/2127.jpg</ImageUrl>
<ModelNumbers>
<ModelNumber>2127</ModelNumber>
</ModelNumbers>
<ManufacturerPartNumbers>
<ManufacturerPartNumber>2127</ManufacturerPartNumber>
</ManufacturerPartNumbers>
<UPCs>
<UPC>841101002711</UPC>
</UPCs>
</Product>
:私は使用していますXMLをここで
[xml]$xml = Get-Content 'D:\temp\feed.xml'
Foreach ($item in (Select-XML -Xml $xml -XPath '//ImageUrl'))
{
$oldValue = $item.node.innertext #need to get the value from the last "/" to the .jpg value
$newValue = [string]::Format('xxx.xxx.com/image/getdvimage/{0}/1/false/200/200/',$oldValue) #place the $oldValue into the new string here
$item.node.Name = ???
}
$NewPath = 'D:\temp\FeedUpd.xml'
$xml.Save($NewPath)
さ:
私はこのコードをしようとしています古いImageUrlを解析する必要があります。モデルを文字列に挿入するだけです。どのようにしてループ内の<ExternalId>
と<ImageUrl>
を置き換えるのですか?
? –
Foreach(Select-XML -Xml $ xml -XPath '// ImageUrl')の$ item) { $ item.node.Name = ??? } $ NewPath = 'D:\ temp \ FeedUpd.xml' $ xml.Save($ NewPath) このコードを実行すると、テキストを取得して試してみるためのImageUrlタグが見つかりません交換する。 – john
上記のコードを実行すると、Foreachループに入ることはなく、$ itemには値は決してありません – john