私は取引を支援するためにプレイしているゲーム用のPowerShellスクリプトを記述しています。PowerShell内のすべての子ノードを持つXML親ノードをクリーンアップ
私は必要なすべての情報を保存するXMLを作成しました。今、私は特定のリソースのすべての子ノードを「きれい」にする可能性を持つようにしたい
<stuff>
<resource>
<type Name="Cotton" ID="0000">
<isDGV>1</isDGV>
<Storage>666</Storage>
<AvgBuyingPrice>
</AvgBuyingPrice>
<lastBuyingPrice>42</lastBuyingPrice>
<lowestBuyingPrice>
</lowestBuyingPrice>
<highestBuyingPrice>
</highestBuyingPrice>
<AvgSellingPrice>
</AvgSellingPrice>
<lastSellingPrice>
</lastSellingPrice>
<lowestSellingPrice>
</lowestSellingPrice>
<highestSellingPrice>
</highestSellingPrice>
<BuyingPricesHistory-Last42>
<price>62</price>
<price>42</price>
</BuyingPricesHistory-Last42>
<SellingPricesHistory-Last42>
<price>
</price>
</SellingPricesHistory-Last42>
<TownsProducedIn>
<town>Sampletown</town>
</TownsProducedIn>
<TownsNeededIn>
</TownsNeededIn>
</type>
<type Name="Spices" ID="0001">
<isDGV>0</isDGV>
.
.
</resource>
</stuff>
:XMLは次のようになります。たとえば<Storage>666</Storage>
は<Storage></Storage>
になります。
これは私が考えるべきことですが、明らかに簡単ではありません。 (コードは完全ではないが、それはまた、リソースの値を表示するために使われているよう$XMLfile
がうまくロードされsaveXML
機能も動作しません。)
$target = $XMLfile.stuff.resource.SelectNodes('type/child::*') | where { $_.Name -eq "$resName" -and $_.ID -eq $ID }
foreach ($Child in $target)
{
$Child.InnerText = ""
}
saveXML $xmlFilePathAndName
さらに悪いことに:私はすべてのエラーメッセージを得ることはありませんName
とID
属性がtype
親要素のレベルでありながら、そのコード:-)
ありがとうございました。あなたのソリューションは完璧に動作します。 XMLを扱うさまざまな方法は、私にとってはまだ非常に混乱しています。 Regexに似ています。 – StUffz