使用powershell修改XML节点的值
我想使用PowerShell脚本修改以下两个路径中的值 使用以下代码获取值。如何修改它们并将其保存到原始文件 例:1.将以下路径的值更改为5.0使用powershell修改XML节点的值,xml,powershell,Xml,Powershell,我想使用PowerShell脚本修改以下两个路径中的值 使用以下代码获取值。如何修改它们并将其保存到原始文件 例:1.将以下路径的值更改为5.0 ([xml] (Get-Content -Raw file.xml)).Map.StyleGroup.RootTopicDefaultsGroup.DefaultSubTopicShape.RightMargin 2.将以下路径的值更改为false ([xml] (Get-Content -Raw file.xml)).Map.Custom.Upda
([xml] (Get-Content -Raw file.xml)).Map.StyleGroup.RootTopicDefaultsGroup.DefaultSubTopicShape.RightMargin
2.将以下路径的值更改为false
([xml] (Get-Content -Raw file.xml)).Map.Custom.UpdatedNamedView
3.保存到原始文件
注意:使用替换方法不起作用,因为实际文档中有许多相同的字段
file.xml:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ap:Map xmlns:ap="http://schemas.mindjet.com/MindManager/Application/2003" OId="pdhXhObhC0avKT9HfmeUMQ==" xmlns:pri="http://schemas.mindjet.com/MindManager/Primitive/2003" xmlns:cor="http://schemas.mindjet.com/MindManager/Core/2003" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://schemas.mindjet.com/MindManager/Application/2003 http://schemas.mindjet.com/MindManager/Application/2003 http://schemas.mindjet.com/MindManager/Core/2003 http://schemas.mindjet.com/MindManager/Core/2003 http://schemas.mindjet.com/MindManager/Delta/2003 http://schemas.mindjet.com/MindManager/Delta/2003 http://schemas.mindjet.com/MindManager/Primitive/2003 http://schemas.mindjet.com/MindManager/Primitive/2003">
<cor:Custom Uri="http://schemas.mindjet.com/MindManager/UpdateCompatibility/2004" cst0:UpdatedCategories="true" Index="0" cst0:UpdatedNamedView="true" cst0:UpdatedTextLabelSetIds="true" cst0:UpdatedGanttViewProperties="true" cst0:UpdatedVisibilityStyle="true" cst0:UpdatedDuration="true" xmlns:cst0="http://schemas.mindjet.com/MindManager/UpdateCompatibility/2004"/>
<ap:StyleGroup>
<ap:RootTopicDefaultsGroup>
<ap:DefaultSubTopicShape BottomMargin="3.5" SubTopicShape="urn:mindjet:RoundedRectangle" VerticalBottomMargin="2.5" RightMargin="3.5" LeftMargin="3.5" VerticalLeftMargin="2.5" VerticalRightMargin="2.5" VerticalTopMargin="2.5" TopMargin="3.5"/>
</ap:RootTopicDefaultsGroup>
</ap:StyleGroup>
</ap:Map>
相关文件下载:
节点视频演示:
- 将输入文件解析为
[xml]
()实例并保存该实例
- 通过使用点符号修改该实例的元素
- 使用
[xml]
实例的方法将修改后的DOM保存到(原始)文件中
@tianyi:XML严格基于文本(基于字符串)。如果要使用PowerShell布尔值$true
和$false
,它们将逐字字符串化(转换为字符串)为true
和false
——请注意开头的大写字符。
# Get the full path of the input file.
$filePath = Convert-Path file.xml
# Parse the file into an XML DOM.
[xml] $xml = Get-Content -Raw $filePath
# Modify the attributes of interest.
$xml.Map.StyleGroup.RootTopicDefaultsGroup.DefaultSubTopicShape.RightMargin = '5.0'
$xml.Map.Custom.UpdatedNamedView = 'false'
# Save the modified DOM back to the input file.
# Note: Be sure to use a *full* path, because .NET's working dir
# usually differs from PowerShell's.
$xml.Save($filePath)