我有一个简单的 XML
<bds>
<bd>
<id>10</id>
<user>john</user>
<servers>
<name>pc24</name>
</servers>
</bd>
<bd>
<id>12</id>
<user>peter</user>
<servers>
<name>pc25</name>
</servers>
</bd>
我有一个函数,我希望它返回一个 XML 文件,其中包含挂在节点上的所有元素。
$collection = "bds"
$attribute = "name"
$obj = "pc25"
function test () {
if ($xml.SelectNodes("//$attribute").name -eq "name") {
return $xml.SelectNodes("//$attribute").parentnode | Where $attribute -eq $obj
}
else {
return $false
}
}
我希望函数的输出是:
<id>12</id>
<user>peter</user>
<servers>
<name>pc25</name>
</servers>
如何使用函数的返回值生成 XML 文件?
您可以使用稍微智能的 XPath 来选择节点,然后InnerXml
属性来获取您想要的输出字符串:
PS> $xml = [xml] @"
<bds>
<bd>
<id>10</id>
<user>john</user>
<servers>
<name>pc24</name>
</servers>
</bd>
<bd>
<id>12</id>
<user>peter</user>
<servers>
<name>pc25</name>
</servers>
</bd>
</bds>
"@
PS> $xml.SelectNodes("bds/bd[servers/name = 'pc25']").InnerXml
<id>12</id><user>peter</user><servers><name>pc25</name></servers>
Note - bds/bd[servers/name = 'pc25']
意思是“找到所有bds/bd
有子节点的节点servers/name
有值的节点pc25
".
然后,您可以根据需要使用 XPath 字符串中的变量值将其重新安装到您的函数中...
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)