我有一个包含一些数据的XML文件。其中一个标签是版本标签。
我需要打开文件,将版本增加1并保存。应使用PowerShell-3自动执行。
我使用-match来获取具有版本标记的行。这条线看起来像这样:
<file version="18" date="12/24/2014" time="14:09" softwareversion="2.19.3">
接近方法:
将上面的字符串放入变量中,并使用split作为show。
$line = '<file version="18" date="12/24/2014" time="14:09" softwareversion="2.19.3">'
$line.split('file version="')
这样我就可以得到分割线,取第三个,更新其中的版本,然后将它们一起添加,然后写入文件。
分割的预期输出为:
<
file version="
18" date="12/24/2014" time="14:09" softwareversion="2.19.3">
但我得到的情况如下。
<
18
dat
11/15/2014
t
m
12:03
PM
twa
2.19.3
>
如何在&#39; file version =&#34;&#39;或者如何以更简单的方式更新版本号(如果可能)?
提前致谢:)
答案 0 :(得分:4)
或者你可以将它作为像这样的XML文件来使用。
$XML_CONTENT = [xml]'<file version="18" date="12/24/2014" time="14:09" softwareversion="2.19.3"></file>'
$VERSION_VALUE = [int]$XML_CONTENT.GetElementsByTagName("file").GetAttribute("version")
$XML_CONTENT.GetElementsByTagName("file").SetAttribute("version",($VERSION_VALUE + 1))
$XML_CONTENT.save("OUTPUTFILE.xml")
答案 1 :(得分:1)
String.Split()分割字符串中的每个字符。所以你得到了'f','i','l'等的分裂
Powershell -split运算符似乎可以执行您想要的操作。
PS D:\> $line -split 'file version="'
<
18" date="12/24/2014" time="14:09" softwareversion="2.19.3">
或者,如果您希望分隔符包含在结果中......
PS D:\> $line -split '(file version=")'
<
file version="
18" date="12/24/2014" time="14:09" softwareversion="2.19.3">
答案 2 :(得分:1)
如果您只想尝试更新字符串中的softwareversion="2.19.3"
数字,可以像这样替换它:
$nextVersion = "2.19.4"
$line = '<file version="18" date="12/24/2014" time="14:09" softwareversion="2.19.3">'
$line = $line -replace 'softwareversion=".*"',('softwareversion="'+$nextVersion+'"')
然后只需将$line
写入文件。