如何根据属性值选择 XmlElement?

Kei*_*ith 3 xml powershell

说我有以下 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>
Run Code Online (Sandbox Code Playgroud)

我有一个 xmlNode 代表我从文件中读入的整个文件

$myXml=New-Object XML
$myXml.Load("path to the books file")
Run Code Online (Sandbox Code Playgroud)

然后我如何选择具有“bk102”id 值的书元素,然后我可以将该 Xmlnode 传递给另一个需要 XMlNode 的函数?

即我的新节点将是:

$Node = <book id="bk102">
       <author>Ralls, Kim</author>
    </book>
Run Code Online (Sandbox Code Playgroud)

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

Fro*_* F. 10

您可以使用 过滤书籍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
Run Code Online (Sandbox Code Playgroud)

XPath

$bookid = 'bk102'
$myxml = [xml](Get-Content '.\New Text Document.txt')

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

id                                                         author
--                                                         ------
bk102                                                      Ralls, Kim
Run Code Online (Sandbox Code Playgroud)