如何基于属性值选择XmlElement?

如何基于属性值选择XmlElement?,xml,powershell,Xml,Powershell,假设我有以下xml <?xml version="1.0"?> <catalog> <book id="bk101"> <author>Gambardella, Matthew</author> </book> <book id="bk102"> <author>Ralls, Kim</author> </book>

假设我有以下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>
然后如何选择id值为“bk102”的book元素,以便将该Xmlnode传递给另一个需要Xmlnode的函数

i、 e我的新节点将是:

$Node = <book id="bk102">
       <author>Ralls, Kim</author>
    </book>
$Node=
拉尔斯,金

谢谢大家。整个上午都在苦苦挣扎。

您可以使用
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

这两个答案都有效,所以我向佩瑟莱道歉。我选择这个答案是因为我最终使用了SelectSingleNode方法。谢谢你们两位的快速回复!
$bookid = 'bk102'
$myxml = [xml](Get-Content '.\New Text Document.txt')

$node = $myxml.SelectSingleNode("catalog/book[@id='$bookid']")
$node

id                                                         author
--                                                         ------
bk102                                                      Ralls, Kim