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

Dav*_*fer 5 xml powershell

$x = ([xml]"<sample name='notsample'/>").sample
Run Code Online (Sandbox Code Playgroud)

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

我发现的唯一解决方法是:

[Xml.XmlElement].GetProperty("Name").GetValue($x)
Run Code Online (Sandbox Code Playgroud)

......但这很黑.我该怎么做才能正确?

Mik*_*ray 5

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

$x.get_Name()
Run Code Online (Sandbox Code Playgroud)

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

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

$x | gm -Force
Run Code Online (Sandbox Code Playgroud)