我有一个power shell脚本,它对XML文件进行了大量更改,除了一个部分外,它都可以正常工作。我需要在XML文件中为每个匹配项切换两个属性的值。在下面的示例中,我需要为每个产品交换“描述”和“名称”的值。我该怎么做?
现有XML:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<MetrixXML xmlns="http://www.lithotechnics.com" SchemaVersion="1.0">
<Project Description="" Name="test123" ProjectID="test123">
<ProductPool>
<Product Description="A #61792-39" Name="21170:01">
</Product>
<Product Description="B #61793-39" Name="21170:02">
</Product>
<Product Description="C #61728-39" Name="21170:03">
</Product>
</ProductPool>
</Project>
</MetrixXML>
应转换为:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<MetrixXML xmlns="http://www.lithotechnics.com" SchemaVersion="1.0">
<Project Description="" Name="test123" ProjectID="test123">
<ProductPool>
<Product Description="21170:01" Name="A #61792-39">
</Product>
<Product Description="21170:02" Name="B #61793-39">
</Product>
<Product Description="21170:03" Name="C #61728-39">
</Product>
</ProductPool>
</Project>
</MetrixXML>
答案 0 :(得分:3)
只需使用Get-Content cmdlet加载xml,迭代注释并交换值:
$xml = [xml] (Get-Content 'Path_to_your_xml')
$xml.DocumentElement.Project.ProductPool.Product | % {
$oldDescription = $_.Description
$_.Description = $_.Name
$_.Name = $oldDescription
}
$xml.Save('Path_to_your_xml')