我正在尝试在格式类似于HTML
的文件中插入一行这就是我正在运行的
$ID = read-host "ENTER NEW ID"
$infile = C:\testfile
$outfile = C:\testfileout
Get-Content $infile |`
foreach-object {$_ -replace "<string>ABCD</string>", "<string>ABCD</string> <string>$ID</string>"} |`
set-content $outfile
我遇到的问题是该文件可以正常工作,但这只是我第一次这样做。我更倾向于一个更有说服力的解决方案,它寻找<string>
的父标题(<array>
),但我找不到一个好标题。 <array>
节点下还有多个<master>
个节点。
编辑:这是一个示例
<plist version="1.0">
<dict>
<key>XYZ</key>
<string>ID</string>
<key>APID</key>
<array>
<string>!@#$$!!</string>
</array>
<key>CreationDate</key>
<date>9/20/2013</date>
<key>Cert</key>
<array>
<data>
abcs
</data>
</array>
<key>ZZZ</key>
<dict>
<key>APID</key>
<string>Filename</string>
<key>get</key>
<false/>
<key>chain</key>
<array>
<string>oohhui</string>
</array>
</dict>
<key>EXP</key>
<date>9/21/2013</date>
<key>Name</key>
<string>Con</string>
<key>IDstring</key>
<array>
<string>ABCD</string>
<string>hdhd</string>
</array>
答案 0 :(得分:0)
假设您的文件与xml格式兼容,您可以使用类似
的内容[xml]$x=gc c:\temp\test.xml
$x.plist.dict.key | %{$_ -replace 'XYZ','ABC'} #will replace any XYZ key value by ABC value;
答案 1 :(得分:0)
尝试这样的事情:
$ID = ...
[xml]$plist = gc 'C:\path\to\your.plist'
$node = $plist.SelectSingleNode("//array/string[text()='ABCD']")
$newNode = $plist.CreateElement('string')
$newNode.AppendChild($plist.CreateTextNode($ID)) >$null
$node.ParentNode.InsertAfter($newNode, $node)