2017-03-17 72 views
1

我想使用PowerShell获取属性的xml元素名称。任何人都可以让我知道,如果我们有一个相同的内置函数。使用Powershell的属性的XML元素名称

下面是我的XML文件名为pricefile.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 

回答

2

如果你想获得你可以试试这个父节点: ($item.SelectNodes("//item") | where {$_.name -like "toy"}).ParentNode

如果你想你的item元素中访问其他属性,你可以这样做是这样的: ($item.SelectNodes("//item") | where {$_.name -like "toy"}).price

您可以访问XmlElement.Name物业财产,像这样:

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

+0

由于它的作品! – Jose

2

您可以从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                 
+0

谢谢,它的作品! – Jose

相关问题