XML 使用 Powershell 的属性的元素名称
XML element name of an attribute using Powershell
我想使用 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>
假设我想获取属性 "toy" 的元素名称 "item"。我怎样才能得到这些数据?
这是我目前所拥有的。
[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
我想使用 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>
假设我想获取属性 "toy" 的元素名称 "item"。我怎样才能得到这些数据?
这是我目前所拥有的。
[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