[玩转系统] PowerShell XML 解析 |快速浏览 PowerShell XML 解析
作者:精品下载站 日期:2024-12-14 04:47:35 浏览:14 分类:玩电脑
PowerShell XML 解析 |快速浏览 PowerShell XML 解析
PowerShell XML 解析简介
以下文章提供了 PowerShell XML 解析的概述。 XML 解析是连接到 XML 文档并读取文档内容、过滤特定 XML 文档、导航到节点并验证 XML 文档的库或过程。 PowerShell 使用 Select-XML 命令行来解析文档。反过来,它使用 XPath(XML 路径)方法和另一种称为 .Net 方法的方法来解析 XML 文档,以便于 XML 文档的搜索和可读性。
PowerShell XML 解析的语法
下面给出了提到的语法:
Select-Xml
[-Xml] <XmlNode[]>
[-XPath] <String>
[-Namespace <Hashtable>]
[<CommonParameters>]
Select-Xml
[-Path] <String[]>
[-XPath] <String>
[-Namespace <Hashtable>]
[<CommonParameters>]
Select-Xml
-LiteralPath <String[]>
[-XPath] <String>
[-Namespace <Hashtable>]
[<CommonParameters>]
Select-Xml
-Content <String[]>
[-XPath] <String>
[-Namespace <Hashtable>]
[<CommonParameters>]
上面 4 种不同提到一次只能使用一对。就像我们不能同时使用 -LiteralPath 和 -Content 参数一样。它们可以以与所提到的相同的组合使用。
如何在PowerShell中执行XML解析?
众所周知,XML 解析是分析 XML 文档、语法和导航节点。 XML 使用 Select-XML 命令行或 .Net 方法。
假设我们有一个如下所示的示例 XML 文件:
示例 XML 文件的部分内容取自 MS 网站。
https://learn.microsoft.com/en-us/previous-versions/windows/desktop/ms762271(v=vs.85)
代码:
<?xml version="1.0"?>
<catalog>
<book id="bk101">
<author>Gambardella, Matthew</author>
<title>XML Developer's Guide</title>
<genre>Computer</genre>
<price>44.95</price>
<publish_date>2000-10-01</publish_date>
<description>An in-depth look at creating applications
with XML.</description>
</book>
<book id="bk102">
<author>Ralls, Kim</author>
<title>Midnight Rain</title>
<genre>Fantasy</genre>
<price>5.95</price>
<publish_date>2000-12-16</publish_date>
<description>A former architect battles corporate zombies,
an evil sorceress, and her own childhood to become queen
of the world.</description>
</book>
<book id="bk103">
<author>Corets, Eva</author>
<title>Maeve Ascendant</title>
<genre>Fantasy</genre>
<price>5.95</price>
<publish_date>2000-11-17</publish_date>
<description>After the collapse of a nanotechnology
society in England, the young survivors lay the
foundation for a new society.</description>
</book>
</catalog>
要使用 XML 内容,我们首先需要以 XML 格式传递内容。如果我们使用简单的 Get-Content 命令,它不会是实际的 XML 格式,而是原始内容。
代码:
Get-Content C:\Temp\books.xml
输出:
要使用 Select-XML 方法或 DotNet 方法,我们需要将原始文件转换为 XML 格式。
有两种方法可以将文件转换为 XML。
- 类型转换
$xmldoc = [xml](Get-Content C:\Temp\books.xml)
- 使用添加类型方法
$xml = New-Object -TypeName XML
$xml.Load('C:\Temp\books.xml')
当我们使用Select-XML方法时,XPath是必需的。
使用 XPath 选择根节点(目录)。
代码:
Select-Xml -Xml $xml -XPath "/catalog"
输出:
另一种导航方法是使用 DotNet 方法。
代码:
$xml.catalog
book
----
{book, book, book}
PowerShell XML 解析示例
下面给出了提到的示例:
例子#1
展开根节点。
用Select-XML方法展开根或第一个父节点(目录)。
代码:
$xmldoc = [xml](Get-Content C:\Temp\books.xml)
Select-Xml -Xml $xmldoc -XPath "/catalog"
输出:
获得上述输出后,我们需要扩展 Node 属性。
代码:
Select-Xml -Xml $xmldoc -XPath "/catalog" | Select -ExpandProperty Node
输出:
例子#2
使用 SelectNodes 方法。
我们可以使用 SelectNodes 方法从 XML 文件中进行搜索,而不是使用 Select-XML 方法。
代码:
$xmldoc = [xml](Get-Content C:\Temp\books.xml)
$xmldoc.SelectNodes("/catalog")
输出:
在上面的例子中,“/”提到了从根节点进行选择。在根节点,我们只有“目录”节点可用。如果我们使用“Book”节点,它不会给出任何输出,因为它不在根级别。
当我们在 xPath 方法中使用“//”语法时,它会从整个文档中选择该节点,无论它们位于何处。
代码:
PS C:\> $xmldoc.SelectNodes("//catalog")
输出:
这将搜索所有目录节点。
与上面的命令类似。
代码:
Select-Xml -Xml $xmldoc -XPath "//catalog" | Select -ExpandProperty Node
和
代码:
$xmldoc.catalog
输出:
从 XML 文件中选择所有书籍。
代码:
$xmldoc.SelectNodes("//book")
输出:
类似命令
代码:
Select-Xml -Xml $xmldoc -XPath "//book" | Select -ExpandProperty Node
和
代码:
$xmldoc.catalog.book
从文件中选择所有作者。
代码:
$xmldoc.SelectNodes("//author")
输出:
类似命令
代码:
Select-Xml -Xml $xmldoc -XPath "//author" | Select -ExpandProperty Node
和
代码:
$xmldoc.catalog.Book.author
输出:
例子#3
使用 SelectSingleNode 方法。
SelectSingleNode方法是获取特定节点的输出。默认情况下,如果未提及索引且索引在 XML 中从 1 开始,则此命令会选择数组中的第一个输出。
代码:
$xmldoc.SelectSingleNode('//book')
输出:
该命令类似于,
代码:
$xmldoc.SelectSingleNode('//book[1]')
或者
Select-Xml -Xml $xmldoc -XPath "//book[1]" | Select -ExpandProperty Node
或者
$xmldoc.catalog.book[1]
- 选择另一个节点:
假设我们要选择第二本书作者,我们可以使用下面的例子。
代码:
$xmldoc.SelectSingleNode("//book[2]/author")
Select-Xml -Xml $xmldoc -XPath "//book[2]/author"
输出:
备用命令
代码:
$xmldoc.catalog.book[2].author
或者
Select-Xml -Xml $xmldoc -XPath "//book[2]/author" | Select -ExpandProperty Node
输出:
例子#4
选择特定属性。
在此示例中,我们将选择一个特定属性。我们需要在这里选择图书 ID 为 bk103 的节点。
代码:
$xmldoc.SelectNodes( "//book[@id='bk103']" )
输出:
您还可以使用 Select-XML 和 dotnet 方法的替代命令,如下所示。
代码:
Select-Xml -Xml $xmldoc -XPath("//book[@id='bk103']") | Select -ExpandProperty Node
或者
$xmldoc.catalog.book | where {$_.id -eq 'bk103'}
输出:
例子#5
选择多个元素。
要选择多个元素,我们可以使用以下命令。
代码:
$xmldoc.SelectNodes("//book/title | //book/author")
或者
$xmldoc.SelectNodes("//title | //author")
上面的命令从 XML 文件中选择标题和作者。
输出:
类似命令
代码:
Select-Xml -Xml $xmldoc -XPath ("//title | //author") | Select -ExpandProperty Node
$xmldoc.catalog.book | Select Title, Author
输出:
例子#6
单点和双点语法 Xpath。
在 XPath 语法中,点 (.) 表示当前节点,双点 (..) 表示当前节点的父节点。
代码:
$xmldoc.SelectSingleNode("//catalog/.")
输出:
上面的例子代表当前节点。
代码:
$xmldoc.SelectSingleNode("//catalog/..")
输出:
上面的例子代表父节点。
结论
PowerShell XML 解析方法在处理 XML 文档时非常有用,因此一旦在应用程序中使用它,应用程序可以更轻松地快速搜索和导航较大的文档,而且 Web 处理速度也非常快。
猜你还喜欢
- 03-30 [玩转系统] 如何用批处理实现关机,注销,重启和锁定计算机
- 02-14 [系统故障] Win10下报错:该文件没有与之关联的应用来执行该操作
- 01-07 [系统问题] Win10--解决锁屏后会断网的问题
- 01-02 [系统技巧] Windows系统如何关闭防火墙保姆式教程,超详细
- 12-15 [玩转系统] 如何在 Windows 10 和 11 上允许多个 RDP 会话
- 12-15 [玩转系统] 查找 Exchange/Microsoft 365 中不活动(未使用)的通讯组列表
- 12-15 [玩转系统] 如何在 Windows 上安装远程服务器管理工具 (RSAT)
- 12-15 [玩转系统] 如何在 Windows 上重置组策略设置
- 12-15 [玩转系统] 如何获取计算机上的本地管理员列表?
- 12-15 [玩转系统] 在 Visual Studio Code 中连接到 MS SQL Server 数据库
- 12-15 [玩转系统] 如何降级 Windows Server 版本或许可证
- 12-15 [玩转系统] 如何允许非管理员用户在 Windows 中启动/停止服务
取消回复欢迎 你 发表评论:
- 精品推荐!
-
- 最新文章
- 热门文章
- 热评文章
[影视] 黑道中人 Alto Knights(2025)剧情 犯罪 历史 电影
[古装剧] [七侠五义][全75集][WEB-MP4/76G][国语无字][1080P][焦恩俊经典]
[实用软件] 虚拟手机号 电话 验证码 注册
[电视剧] 安眠书店/你 第五季 You Season 5 (2025) 【全10集】
[电视剧] 棋士(2025) 4K 1080P【全22集】悬疑 犯罪 王宝强 陈明昊
[软件合集] 25年6月5日 精选软件22个
[软件合集] 25年6月4日 精选软件36个
[短剧] 2025年06月04日 精选+付费短剧推荐33部
[短剧] 2025年06月03日 精选+付费短剧推荐25部
[软件合集] 25年6月3日 精选软件44个
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电视剧] 欢乐颂.5部全 (2016-2024)
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[影视] 【稀有资源】香港老片 艺坛照妖镜之96应召名册 (1996)
[剧集] 神经风云(2023)(完结).4K
[剧集] [BT] [TVB] [黑夜彩虹(2003)] [全21集] [粤语中字] [TV-RMVB]
[实用软件] 虚拟手机号 电话 验证码 注册
[资源] B站充电视频合集,包含多位重量级up主,全是大佬真金白银买来的~【99GB】
[影视] 内地绝版高清录像带 [mpg]
[书籍] 古今奇书禁书三教九流资料大合集 猎奇必备珍藏资源PDF版 1.14G
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电影] 美国队长4 4K原盘REMUX 杜比视界 内封简繁英双语字幕 49G
[电影] 死神来了(1-6)大合集!
[软件合集] 25年05月13日 精选软件16个
[精品软件] 25年05月15日 精选软件18个
[绝版资源] 南与北 第1-2季 合集 North and South (1985) /美国/豆瓣: 8.8[1080P][中文字幕]
[软件] 25年05月14日 精选软件57个
[短剧] 2025年05月14日 精选+付费短剧推荐39部
[短剧] 2025年05月15日 精选+付费短剧推荐36部
- 最新评论
-
- 热门tag