首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在使用select-xml应用XPath表达式之后,有没有一种可靠的方法来获取所选元素的名称

在使用select-xml应用XPath表达式之后,有没有一种可靠的方法来获取所选元素的名称
EN

Stack Overflow用户
提问于 2021-08-03 19:30:08
回答 1查看 33关注 0票数 2

我正在努力寻找一种可靠的方法来确定由使用PowerShell cmdlet select-xml的XPath表达式选择的元素的名称

代码语言:javascript
复制
$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)"
}

打印以下代码

代码语言:javascript
复制
name = foo, localname = FOO
name = bar, localname = B
name = C, localname = BAZ
name = D, localname = D

显然,XML属性namelocalname会干扰同名的.NET类属性。那么,对于上面的例子,是否有一个返回ABCD的构造呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-08-03 19:56:40

XMLElement类允许匹配属性名称和XMLElement类属性名称。在这种情况下,属性名称在成员访问(object.property)期间优先。实例化XMLElement对象时创建的属性可以使用Get_方法(在此场景中为Get_Name()Get_LocalName() )进行检索。可以使用GetAttribute方法检索属性名称,以确保一致的体验。

代码语言:javascript
复制
$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')
}
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68641831

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档