使用 powershell 从 XML 文件中提取部分
Extract parts from XML file using powershell
给定以下 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
我 运行 Powershell 2.0 on Windows 7 Pro 如果重要的话。
您可以使用 $xml.Proponix.Header
:
访问 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
给定以下 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
我 运行 Powershell 2.0 on Windows 7 Pro 如果重要的话。
您可以使用 $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