2017-03-17 114 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

相關問題