找回密码
 加入
搜索
查看: 3055|回复: 11

[AU3基础] 读取.xml文本指定行数指定数值并删除,求助

[复制链接]
发表于 2020-12-3 13:42:52 | 显示全部楼层 |阅读模式
<?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"/> 字符
发表于 2020-12-3 14:02:49 | 显示全部楼层
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[0], StringRegExpReplace($sSource, '(?mi)^(\h*<CheckID Value\=")\d*"', '\1"'))
 楼主| 发表于 2020-12-3 18:48:20 | 显示全部楼层
谢谢老大,我先试下
发表于 2020-12-4 16:48:02 | 显示全部楼层
参与一下
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
发表于 2020-12-4 18:14:14 | 显示全部楼层
kevinch 大侠 搞对象专业户
发表于 2020-12-5 11:17:31 | 显示全部楼层
afan 发表于 2020-12-4 18:14
kevinch 大侠 搞对象专业户

说的我竟无言以对
发表于 2020-12-6 10:47:34 | 显示全部楼层
不结贴下次直接扣分。
发表于 2020-12-6 15:09:20 | 显示全部楼层
我怎么觉得sed命令更简单呢。
发表于 2020-12-6 16:01:30 | 显示全部楼层
laycher 发表于 2020-12-6 15:09
我怎么觉得sed命令更简单呢。

你确定xml有sed这个方法?秀一个?
发表于 2020-12-7 21:42:10 | 显示全部楼层
我是説linux的sed命令。
windows也可以有这个命令,装下gow就可以。
发表于 2020-12-7 21:44:35 | 显示全部楼层
laycher 发表于 2020-12-7 21:42
我是説linux的sed命令。
windows也可以有这个命令,装下gow就可以。

的确更简单,你高兴就好。
 楼主| 发表于 2020-12-10 20:35:17 | 显示全部楼层
已经测试好了,感谢各位老大,完美解决了
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-12-23 07:22 , Processed in 0.082379 second(s), 19 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表