使用Powershell的平面xml文件的递归方法

时间:2013-12-02 08:23:34

标签: xml powershell-v2.0

我有一个扁平的xml文件。元素属于同一级别,了解彼此属性的唯一方法是parentId,如下所示。

<pages>
 <page id="1" parentId="0">
 ...
 </page>
 <page id="2" parentId="1">
  ...
 </page>
 <page id="3" parentId="1">
 ...
 </page>
 <page id="4" parentId="2">
 ...
 </page>
 ...
 ....
</pages>

我想创建一个递归方法来遍历所有页面并将它们互相替换,并使用Powershell将其设置为真正的xml(树结构)。我是否需要为每个元素读取整个xml?

1 个答案:

答案 0 :(得分:0)

我解决了这个问题,这是我的解决方案:

function GetName($parentNode)
{
  Write-Host $parentNode.Id " " $parentNode.Name
  $childs = $AMtalatData.Pages.Page | Where-Object {$_.ParentId -eq $parentNode.Id}

  foreach($node in $childs)
  {
    Write-Host "  id="$node.Id " " $node.Name




    $grundChilds = $MyData.Pages.Page | Where-Object {$_.ParentId -eq $node.Id}

    if($grundChilds.Count -gt 0)
    {
        MyFunction-parentNode $node
    }        
  }

}

$myelem= $MyData.Pages.Page | Where-Object {$_.Id -eq 12}

MyFunction -parentNode $myelem