我有 2 个 XML 文件,我正在从第一个文件读取一个值,需要用特定字符串替换第二个 XML 中的该值,这是我到目前为止得到的,但效果不佳,它将整个 XML 更改为 #由于某种原因文档
编辑 重新设计脚本的整个逻辑,我一直在修剪节点,在 IdexOf 处出现错误,为什么?
<BunnyTemplate> <Parm Name="A-1" Source="Application" OnAbsence="1.com"> <Parm Name="A-2" Source="Application" OnAbsence="2.com"> <Parm Name="A-3" Source="Application" OnAbsence="\\3\3"/> <Parm Name="A-4" Source="Application" OnAbsence="4.com"> </BunnyTemplate>
Run Code Online (Sandbox Code Playgroud)
$file1 = "C:\..\Desktop\file1.xml"
$file1Content = [xml](Get-Content $file1)
$targetNode = $file1Content.SelectSingleNode("//General/@findMe")
$trimmedNode = $targetNode.Substring(0, $targetNode.IndexOf('last'))
Run Code Online (Sandbox Code Playgroud)
不要-replace在 XML 文档上使用,XPath而是使用。
假设$file2包含:
<BunnyTemplate>
<Parm Name="Bunny" Source="Bunny" OnAbsence="value-to-replace"/>
</BunnyTemplate>
Run Code Online (Sandbox Code Playgroud)
...你可以执行以下操作:
$file2Xml = [xml](Get-Content $file2)
# Locate target node
$targetNode = $file2Xml.SelectSingleNode("//Parm[@OnAbsence]")
# Overwrite attribute value
$targetNode.SetAttribute('OnAbsence', "text${trimmedNode}")
# save file
$file2Xml.Save("C:\path\to\output.xml")
Run Code Online (Sandbox Code Playgroud)
SelectSingleNode("//Parm[@OnAbsence]")<Parm>将返回具有属性的第一个节点OnAbsence。
如果您特别需要使用 来定位一个,Source="Bunny"您可以使用//Parm[@Source = 'Bunny']
| 归档时间: |
|
| 查看次数: |
10488 次 |
| 最近记录: |