我试图找到一个公式,根据元素在 XML 层次结构中的位置为该元素创建 URL。
这是我的示例 xml:
<Xml>
<Site Url="http://mysite.abc">
<Content></Content>
<SubSites>
<Site Url="/sub1">
<Content></Content>
<SubSites>
<Site Url="/sub2">
<Content></Content>
<SubSites>
<Site Url="/sub3">
<Content></Content>
</Site>
</SubSites>
</Site>
</SubSites>
</Site>
</SubSites>
</Site>
</Xml>
我在 Powershell 中有一个函数,它从顶部向下递归迭代,并且在每个“Content”元素上我想生成祖先 Url 值的串联。
因此它应该为每个“内容”节点连续生成:
http://mysite.abc
http://mysite.abc/sub1
http://mysite.abc/sub1/sub2
http://mysite.abc/sub1/sub2/sub3
我现在使用以下作为开始:
( $Node = '内容' 元素)
$Sites = $Node | Select-XML -XPath "//ancestor::Site"
但对于每个 $Node,它都会选择所有“Site”元素。
它期望在 xml 结构中向下查找时找到更多祖先。
如果有人知道如何直接使用 Xpath 连接这些值,那就太好了,但对于初学者来说,我很高兴知道我当前的方法出了什么问题。
//ancestor::Site
会给你祖传的Site
节点相对于any node (//
) 在树上。
Use ./ancestor::Site
仅获取相对于当前节点的祖先(.
):
$Sites = $Node | Select-XML -XPath "./ancestor::Site"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)