0
私は以下のようにこのXML構造を持っています。 "Zipcode:"のプロパティ値を持つオブジェクトブロックを見つけて、その前にOrderIDの値を2行、実際の郵便番号の値を持つ次の行を取得する必要があります。複数のプロパティタグからプロパティ名と値を抽出します
最終結果は、私はOrderID値と郵便番号のペア(Smith-123,05403)が必要です。
<Object name="CustomDataList" type="TDM_List_CustomData">
<List name="Items">
<Object type="TDM_Item_CustomData">
<Property name="CustomDataID" value="CD156FC1461C674F2CAFC181013FCB9822" />
<Property name="OrderID" value="Smith-123" />
<Property name="FieldID" value="{CCC2CBB8-BEAA-4E9B-AF2D-3E32B68821D0}" />
<Property name="FieldCaption" value="" />
<Property name="Value" value="35082_Site20" />
<Property name="Kind" value="cdkInternal" />
</Object>
<Object type="TDM_Item_CustomData">
<Property name="CustomDataID" value="CD58AFECE84FF24D53AFB5E2F0411EE3C9" />
<Property name="OrderID" value="Smith-123" />
<Property name="FieldID" value="DS_CustomizableFieldZB99" />
<Property name="FieldCaption" value="Zipcode:" />
<Property name="Value" value="05403" />
<Property name="Kind" value="cdkPublic" />
</Object>
<Object type="TDM_Item_CustomData">
<Property name="CustomDataID" value="CD5E584899B6274F88B05D459863006914" />
<Property name="OrderID" value="Smith-123" />
<Property name="FieldID" value="{62D7C382-9754-454D-A4D5-04437BFC5FE4}" />
<Property name="FieldCaption" value="" />
<Property name="Value" value="False" />
<Property name="Kind" value="cdkInternal" />
</Object>
私は、単一の行にのみ単一のプロパティ名と値のペアを探していたところ、私が以前に使用されている以下のいくつかの非常に初心者のコードを持っていますが、私は前と後の行を読み込む方法を見つけ出すことはできません、私の"郵便番号"ポインタ。
Get-ChildItem C:\temp\pwrshell\*\*.xml | foreach {
echo $_.FullName
[xml]$doc = Get-Content $_
$OrderID = $doc.SelectSingleNode("//Property[@name = 'OrderID']")
if ($OrderID) {
echo "OrderID: $($OrderID.value)"
} else {
echo "OrderID not found"
}
}