鉴于以下XML文件结构,为什么我的代码不起作用?我只想提取出这些字段,以便我可以重命名XML文件,如下所示:
SB90634111_TYPE_20150803_PAY.xml
<?xml version="1.0"?>
<Proponix>
<Header>
<DestinationID>ABC</DestinationID>
<SenderID>PRO</SenderID>
<ClientBank>ABC</ClientBank>
<OperationOrganizationID>ABCD</OperationOrganizationID>
<MessageType>TYPE</MessageType>
<DateSent>20150802</DateSent>
<TimeSent>135244</TimeSent>
<MessageID>1073459900</MessageID>
</Header>
<SubHeader>
<InstrumentID>SB90634111</InstrumentID>
<InstrumentStatus>ACT</InstrumentStatus>
<ActivityType>PAY</ActivityType>
<BusinessDate>20150803</BusinessDate>
</SubHeader>
</Proponix>
$xml = [xml](Get-Content 'my.xml')
$xml.Proponix | ? {$_.ID -eq 'Header'} | write-output MessageType
$xml.Proponix | ? {$_.ID -eq 'Subheader'} | write-output InstrumentID,ActivityType,BusinessDate
如果重要的话,我在Windows 7 Pro上运行Powershell 2.0。
答案 0 :(得分:2)
您可以使用$xml.Proponix.Header
:
$xml.Proponix.Header | Select MessageType
$xml.Proponix.SubHeader | Select InstrumentID,ActivityType,BusinessDate
以下是使用格式字符串重命名文件的完整示例:
$path = 'c:\my.xml'
$xml = [xml](Get-Content $path)
$newFileName = '{0}_{1}_{2}_{3}.xml' -f `
$xml.Proponix.SubHeader.InstrumentID,
$xml.Proponix.Header.MessageType,
$xml.Proponix.SubHeader.BusinessDate,
$xml.Proponix.SubHeader.ActivityType
Rename-Item $path $newFileName