使用 XPath 在 XML 中選擇屬性
Rohan Timalsina
2023年1月30日
-
在 PowerShell 中使用
Select-Xml
Cmdlet 選擇 XML 中的屬性 -
在 PowerShell 中使用
SelectNodes
方法選擇 XML 中的屬性 -
在 PowerShell 中使用
Get-Content
Cmdlet 選擇 XML 中的屬性
XML 代表可擴充套件標記語言。XML 檔案是具有自定義標籤的純文字檔案,用於定義文件的結構。
它主要用於儲存和共享結構化資訊。XML 檔案的內容與 HTML 檔案類似。
本教程將介紹在 PowerShell 中使用 XPath 在 XML 中選擇屬性的不同方法。
在 PowerShell 中使用 Select-Xml
Cmdlet 選擇 XML 中的屬性
Select-Xml
cmdlet 允許你使用 XPath 在 XML 字串或文件中查詢文字。
這是一個 XML 檔案的簡單示例。
<website>
<site name="DelftStack">
<content>
<topic>PowerShell Howtos</topic>
<article>How to convert XML into CSV?</article>
</content>
</site>
<site name="DelftStack">
<content>
<topic>Linux Howtos</topic>
<article>Delete Files Recursively in Linux</article>
</content>
</site>
</website>
以下命令在 C:\Users\rhntm
目錄中的 new.xml
檔案中搜尋 XPath 查詢 topic
。
Select-Xml -Path C:\Users\rhntm\new.xml -XPath "//topic" | Select-Object -ExpandProperty Node
輸出:
#text
-----
PowerShell Howtos
Linux Howtos
-Path
引數指定要搜尋的 XML 檔案的路徑和檔名。
-XPath
引數指定要搜尋的 XPath 查詢。查詢文字區分大小寫。
在 PowerShell 中使用 SelectNodes
方法選擇 XML 中的屬性
SelectNodes()
方法選擇與 XML 檔案中的 XPath 表示式匹配的節點列表。
以下示例從 new.xml
檔案中選擇節點 content
。
[xml]$xml = Get-Content 'C:\Users\rhntm\new.xml'
$xml.SelectNodes('//content')
輸出:
topic article
----- -------
PowerShell Howtos How to convert XML into CSV?
Linux Howtos Delete Files Recursively in Linux
[xml]
將變數轉換為 XML 物件。Get-Content
cmdlet 獲取 C:\Users\rhntm\new.xml
的內容並將其儲存在 $xml
變數中。
要選擇特定屬性,你可以使用 Select-Object
cmdlet。例如,以下命令僅從 new.xml
檔案中選擇 article
。
[xml]$xml = Get-Content 'C:\Users\rhntm\new.xml'
$xml.SelectNodes('//content') | Select-Object article
輸出:
article
-------
How to convert XML into CSV?
Delete Files Recursively in Linux
在 PowerShell 中使用 Get-Content
Cmdlet 選擇 XML 中的屬性
正如你在上面看到的,Get-Content
cmdlet 獲取 XML 檔案的內容。你可以將內容儲存在變數中並將其轉換為 XML 物件。
以下示例顯示瞭如何使用 Get-Content
並選擇 XML 檔案中的屬性。
[xml]$xml = Get-Content 'C:\Users\rhntm\new.xml'
$xml.website.site.content.topic
輸出:
PowerShell Howtos
Linux Howtos
如果你想要 XML 檔案中的文字值,這是一種簡單的使用方法。我們希望這可以幫助你瞭解如何在 PowerShell 中選擇 XML 中的屬性。
作者: Rohan Timalsina