使用Powershell中的childnode属性修改XML父节点

时间:2017-03-17 03:21:29

标签: xml powershell attributes nodes parent-node

我尝试使用Powershell中的子节点属性修改父节点属性。做这个的最好方式是什么?任何指针都非常感激。下面是代码。该文件的名称是pricefile.xml

 <model type="model1" name="default" price="12.12" date="some_value">
  <PriceData>
    <item name="watch" price="24.28" date="2013-12-01"/>
    <item name="toy" price="22.34" date="2013-12-02"/>
    <item name="bread" price="24.12" date="2013-12-03"/>
  </PriceData>
 </model>

我想使用项目名称过滤上面的xml文件。例如,如果我需要项目监视的详细信息,我应该能够在powershell中解析上面的xml并获得以下内容。

 <model type="model1" name="watch" price="24.28" date="2013-12-01">
  <PriceData>
    <item name="watch" />
  </PriceData>
 </model>

注意如何删除子节点的属性,并使用watch属性重置模型属性。你能告诉我最好的办法吗?

如果我使用以下任何一个命令,我没有输出。

    [xml]$item = get-content pricefile.xml

    $item.SelectNodes("//item/@*").parentnode

    $item.SelectNodes("//item/@*") | where {$_.parentnode}

1 个答案:

答案 0 :(得分:0)

在解析/遍历xml文档的类似问题中提供了一个非常优雅的解决方案。 它也适用于在这个问题中遍历树。 以下是另一个问题的链接:

Modify XML Parent Attributes iterating through Child attributes using powershell