如何 select 基于属性值的 XmlElement?
How to select an XmlElement based on an attribute value?
假设我有以下 xml
<?xml version="1.0"?>
<catalog>
<book id="bk101">
<author>Gambardella, Matthew</author>
</book>
<book id="bk102">
<author>Ralls, Kim</author>
</book>
<book id="bk103">
<author>Corets, Eva</author>
</book>
</catalog>
我有一个代表整个文件的 xmlNode,我通过
从文件中读入
$myXml=New-Object XML
$myXml.Load("path to the books file")
然后如何 select id 值为 "bk102" 的 book 元素,以便我可以将该 Xmlnode 传递给另一个需要 XMlNode 的函数?
即我的新节点将是:
$Node = <book id="bk102">
<author>Ralls, Kim</author>
</book>
谢谢大家。整个早上都在挣扎。
您可以使用 Where-Object
过滤书籍,或者尝试使用 XPath。这里有两个例子:
圆点导航
$bookid = 'bk102'
$myxml = [xml](Get-Content '.\New Text Document.txt')
$node = $myxml.catalog.book | Where-Object { $_.id -eq $bookid }
$node
id author
-- ------
bk102 Ralls, Kim
XPath
$bookid = 'bk102'
$myxml = [xml](Get-Content '.\New Text Document.txt')
$node = $myxml.SelectSingleNode("catalog/book[@id='$bookid']")
$node
id author
-- ------
bk102 Ralls, Kim
假设我有以下 xml
<?xml version="1.0"?>
<catalog>
<book id="bk101">
<author>Gambardella, Matthew</author>
</book>
<book id="bk102">
<author>Ralls, Kim</author>
</book>
<book id="bk103">
<author>Corets, Eva</author>
</book>
</catalog>
我有一个代表整个文件的 xmlNode,我通过
从文件中读入$myXml=New-Object XML
$myXml.Load("path to the books file")
然后如何 select id 值为 "bk102" 的 book 元素,以便我可以将该 Xmlnode 传递给另一个需要 XMlNode 的函数?
即我的新节点将是:
$Node = <book id="bk102">
<author>Ralls, Kim</author>
</book>
谢谢大家。整个早上都在挣扎。
您可以使用 Where-Object
过滤书籍,或者尝试使用 XPath。这里有两个例子:
圆点导航
$bookid = 'bk102'
$myxml = [xml](Get-Content '.\New Text Document.txt')
$node = $myxml.catalog.book | Where-Object { $_.id -eq $bookid }
$node
id author
-- ------
bk102 Ralls, Kim
XPath
$bookid = 'bk102'
$myxml = [xml](Get-Content '.\New Text Document.txt')
$node = $myxml.SelectSingleNode("catalog/book[@id='$bookid']")
$node
id author
-- ------
bk102 Ralls, Kim