读取.xml文本指定行数指定数值并删除,求助
<?xml version="1.0" encoding="UTF-8"?><!-- Produced by Beyond Compare 4 from Scooter Software -->
<BCState Version="1" MinVersion="1">
<TBcState>
<FirstStartup Value="False"/>
<FormPositions>
<TCheckForUpdatesDialog Value="485;227;880;511"/>
<TDirLoadErrorDialog Value="488;321;878;417"/>
<TProfileBrowseDialog Value="383;77;982;660"/>
<TViewFrame Value="0;0;1366;738"/>
</FormPositions>
</TBcState>
<TCheckForUpdatesState>
<Build Value="25118"/>
<CheckID Value="256591142818099"/>
<LastChecked Value="2020-10-30 10:40:18"/>
</TCheckForUpdatesState>
求助,读取第15行并删除第15行的 "256591142818099"/> 字符 Local $sSource = _
@CRLF & _
'<?xml version="1.0" encoding="UTF-8"?>' & @CRLF & _
'<!-- Produced by Beyond Compare 4 from Scooter Software -->' & @CRLF & _
'<BCState Version="1" MinVersion="1">' & @CRLF & _
' <TBcState>' & @CRLF & _
' <FirstStartup Value="False"/>' & @CRLF & _
' <FormPositions>' & @CRLF & _
' <TCheckForUpdatesDialog Value="485;227;880;511"/>' & @CRLF & _
' <TDirLoadErrorDialog Value="488;321;878;417"/>' & @CRLF & _
' <TProfileBrowseDialog Value="383;77;982;660"/>' & @CRLF & _
' <TViewFrame Value="0;0;1366;738"/>' & @CRLF & _
' </FormPositions>' & @CRLF & _
' </TBcState>' & @CRLF & _
' <TCheckForUpdatesState>' & @CRLF & _
' <Build Value="25118"/>' & @CRLF & _
' <CheckID Value="256591142818099"/>' & @CRLF & _
' <LastChecked Value="2020-10-30 10:40:18"/>' & @CRLF & _
' </TCheckForUpdatesState>'
;~ MsgBox(0, '源字符串', $sSource)
Local $aSRE = StringRegExp($sSource, '(?mi)^\h*<CheckID Value\="(\d*)"', 1)
If Not @Error Then MsgBox(0, '删除' & $aSRE, StringRegExpReplace($sSource, '(?mi)^(\h*<CheckID Value\=")\d*"', '\1"')) 谢谢老大,我先试下 参与一下Local $sSource ='<?xml version="1.0" encoding="UTF-8"?>' & @CRLF & _
'<!-- Produced by Beyond Compare 4 from Scooter Software -->' & @CRLF & _
'<BCState Version="1" MinVersion="1">' & @CRLF & _
' <TBcState>' & @CRLF & _
' <FirstStartup Value="False"/>' & @CRLF & _
' <FormPositions>' & @CRLF & _
' <TCheckForUpdatesDialog Value="485;227;880;511"/>' & @CRLF & _
' <TDirLoadErrorDialog Value="488;321;878;417"/>' & @CRLF & _
' <TProfileBrowseDialog Value="383;77;982;660"/>' & @CRLF & _
' <TViewFrame Value="0;0;1366;738"/>' & @CRLF & _
' </FormPositions>' & @CRLF & _
' </TBcState>' & @CRLF & _
' <TCheckForUpdatesState>' & @CRLF & _
' <Build Value="25118"/>' & @CRLF & _
' <CheckID Value="256591142818099"/>' & @CRLF & _
' <LastChecked Value="2020-10-30 10:40:18"/>' & @CRLF & _
' </TCheckForUpdatesState>' & @CRLF & _
'</BCState>'
$xml=ObjCreate("msxml2.domdocument")
With $xml
.loadxml($sSource)
$t=.selectsinglenode("//BCState/TCheckForUpdatesState/CheckID")
If IsObj($t) Then
ConsoleWrite($t.getattribute("Value")&@CRLF)
$t.parentnode.removechild($t)
EndIf
ConsoleWrite(.xml&@CRLF)
EndWith kevinch 大侠 搞对象专业户 afan 发表于 2020-12-4 18:14
kevinch 大侠 搞对象专业户
说的我竟无言以对:face (32): 不结贴下次直接扣分。 我怎么觉得sed命令更简单呢。 laycher 发表于 2020-12-6 15:09
我怎么觉得sed命令更简单呢。
你确定xml有sed这个方法?秀一个? 我是説linux的sed命令。
windows也可以有这个命令,装下gow就可以。 laycher 发表于 2020-12-7 21:42
我是説linux的sed命令。
windows也可以有这个命令,装下gow就可以。
的确更简单,你高兴就好。 已经测试好了,感谢各位老大,完美解决了
页:
[1]