繁体   English   中英

使用Powershell的属性的XML元素名称

[英]XML element name of an attribute using Powershell

我想使用powershell获取属性的xml元素名称。 任何人都可以让我知道我们是否具有内置功能。

以下是我的名为Pricefile.xml的xml文件

 <model type="model1" name="default" price="12.12" date="some_value">
  <PriceData>
    <item name="watch" price="24.28" date="2013-12-01"/>
    <item name="toy" price="22.34" date="2013-12-02"/>
    <item name="bread" price="24.12" date="2013-12-03"/>
  </PriceData>
 </model>

假设我想获取属性“玩具”的元素名称“项目”。 我如何获得这些数据?

到目前为止,这就是我所拥有的。

[xml]$item = get-content pricefile.xml
$item.SelectNodes("//item") | where {$_.name -like "toy"}

这给了我下面的输出,但是我不知道如何从这里或它的父节点获取属性的元素。

name            price                   date                                             
----            -----                   ----                                             
toy             22.34                   2013-12-02   

如果您想获取父节点,可以尝试以下方法: ($item.SelectNodes("//item") | where {$_.name -like "toy"}).ParentNode

如果您想访问item元素内的另一个属性,则可以这样进行: ($item.SelectNodes("//item") | where {$_.name -like "toy"}).price

您可以像这样访问XmlElement.Name属性属性:

(($item.SelectNodes("//item")))[0].name

您可以从XmlElement.LocalName属性获取它,例如:

λ $item = [xml]@"
>> <model type="model1" name="default" price="12.12" date="some_value">
>>   <PriceData>
>>     <item name="watch" price="24.28" date="2013-12-01"/>
>>     <item name="toy" price="22.34" date="2013-12-02"/>
>>     <item name="bread" price="24.12" date="2013-12-03"/>
>>   </PriceData>
>>  </model>
>> "@
λ $item.SelectNodes("//item") | where {$_.name -like "toy"} | select LocalName

LocalName
---------
item

λ $item.SelectNodes("//*[contains(@name,'toy')]") | select LocalName   

LocalName                                                              
---------                                                              
item                                                                   

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM