我正在努力寻找一种可靠的方法来确定由使用PowerShell cmdlet select-xml的XPath表达式选择的元素的名称
$xml = select-xml -content @'
<root>
<A name='foo' localname='FOO'/>
<B name='bar' />
<C id ='baz' localname='BAZ'/>
<D />
</root>
'@ -XPath '/root/*'
[System.Xml.XmlElement] $elem = $null
foreach ($elem in $xml.Node) {
"name = $($elem.name), localname = $($elem.localname)"
}打印以下代码
name = foo, localname = FOO
name = bar, localname = B
name = C, localname = BAZ
name = D, localname = D显然,XML属性name和localname会干扰同名的.NET类属性。那么,对于上面的例子,是否有一个返回A、B、C和D的构造呢?
发布于 2021-08-03 19:56:40
XMLElement类允许匹配属性名称和XMLElement类属性名称。在这种情况下,属性名称在成员访问(object.property)期间优先。实例化XMLElement对象时创建的属性可以使用Get_方法(在此场景中为Get_Name()和Get_LocalName() )进行检索。可以使用GetAttribute方法检索属性名称,以确保一致的体验。
$xml = select-xml -content @'
<root>
<A name='foo' localname='FOO'/>
<B name='bar' />
<C id ='baz' localname='BAZ'/>
<D />
</root>
'@ -XPath '/root/*'
$xml.Node |% {
# XMLElement class property Name and LocalName values
"Name = {0}, LocalName = {1}" -f $_.Get_Name(),$_.Get_LocalName()
# Value of attributes name and localname
"name = {0}, localname = {1}" -f $_.GetAttribute('name'),$_.GetAttribute('localname')
}https://stackoverflow.com/questions/68641831
复制相似问题