2015-01-08 167 views
0

說我有下面的XML如何根據屬性值選擇XmlElement?

<?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> 

我有一個代表,我做

$myXml=New-Object XML 
$myXml.Load("path to the books file") 

從文件中讀取整個文件如何,然後選擇具有book元素一個XmlNode 「bk102」的id值,這樣我就可以將該Xmlnode傳遞給期望XMlNode的另一個函數?

即我的新節點將是:

$Node = <book id="bk102"> 
     <author>Ralls, Kim</author> 
    </book> 

感謝所有。整個上午都在苦苦掙扎。

回答

1

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

這兩個答案的工作,所以對不住PetSerAI。我選擇了這個答案,因爲我最終使用了SelectSingleNode方法。 謝謝你的快速反應! – Keith