获取具有“name”属性的XML元素的标记名称

时间:2014-09-08 18:04:54

标签: xml powershell

$x = ([xml]"<sample name='notsample'/>").sample

鉴于上述代码行,我希望找到XmlElement$x所描述的代码名称。通常,您只需使用$x.Name,但name属性会屏蔽它。 sample不返回$x.name,而是返回notsample

我找到的唯一解决方法是:

[Xml.XmlElement].GetProperty("Name").GetValue($x)

......但这很黑。我怎么能正确地做到这一点?

2 个答案:

答案 0 :(得分:5)

您可以通过直接调用属性getter方法来获取它:

$x.get_Name()

这适用于许多其他类似的情况。例如,如果类型实现IDictonary并具有其他属性,则可能需要使用此属性来访问这些属性。默认情况下,PowerShell会对字典进行查找,而不是获取/设置所访问的属性。

您可以使用-Force上的Get-Member选项让PowerShell显示隐藏的成员:

$x | gm -Force

答案 1 :(得分:3)

您所追求的是LocalName类的XmlElement属性。尝试:

PS> $x.LocalName
sample
  

获取当前节点的本地名称。

     

物业价值

     

输入:System.String

     

删除前缀的当前节点的名称。例如,LocalName为元素<bk:book> book

来源:MSDN: XmlElement.LocalName