我有一个扁平的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?
答案 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