簡體   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