PowerShell 技能连载 - XML数据处理实战
XML作为结构化数据交换标准,在PowerShell中可通过原生命令实现高效处理。
1 | # 读取服务器配置XML |
XML生成与修改
创建带命名空间的XML文档:
1
2
3
4
5
6
7
8
9
10
11
12$ns = @{ns='http://schemas.vichamp.com/config'}
$xmlWriter = New-Object System.Xml.XmlTextWriter('new_config.xml',$null)
$xmlWriter.WriteStartDocument()
$xmlWriter.WriteStartElement('ns','Configuration','http://schemas.vichamp.com/config')
$xmlWriter.WriteStartElement('Server')
$xmlWriter.WriteAttributeString('Name','web01')
$xmlWriter.WriteElementString('IP','192.168.1.101')
$xmlWriter.WriteEndElement()
$xmlWriter.WriteEndDocument()
$xmlWriter.Close()使用Select-Xml进行复杂查询:
1
2
3
4
5
6
7
8$result = Select-Xml -Path $configPath -XPath "//Server[@Role='Database']"
$result.Node | ForEach-Object {
[PSCustomObject]@{
Cluster = $_.ParentNode.Name
ServerName = $_.Name
Version = $_.GetAttribute('Version')
}
}
最佳实践:
- 使用强类型[xml]加速处理
- 通过XPath实现精准查询
- 合理处理XML命名空间
- 使用XMLTextWriter生成合规文档