找回密码
 加入
搜索
查看: 2015|回复: 4

[AU3基础] 求助-如何对xml进行查找替换操作[已解决]

[复制链接]
发表于 2011-8-15 14:24:47 | 显示全部楼层 |阅读模式
本帖最后由 huaisha1224 于 2011-8-25 17:30 编辑

需要将如下的xml中的<WriteSpeed>0</WriteSpeed>里面的0这个值进行修改

我的思路是
1、先读取出这个值、然后在修改这个值并保存
我用FileOpen 一直搞不定这个问题
xml的内容如下:这个仅仅是一项里面的内容 xml文件中可能存在上百条这样的内容 都需要同时修改
  <ClientConfig>
        <Name>001</Name>
        <Mac>000000000000</Mac>
        <IP>16777217</IP>
        <Mask>4294967040</Mask>
        <Gateway>3232238078</Gateway>
        <DNS1>3232260963</DNS1>
        <DNS2>3378883619</DNS2>
        <DiskID>301</DiskID>
        <DiskID2>0</DiskID2>
        <DiskID3>0</DiskID3>
        <DiskID4>0</DiskID4>
        <GroupID>0</GroupID>
        <WriteMem>0</WriteMem>
        <WriteSpeed>0</WriteSpeed>
        <Resolution>67109632</Resolution>
        <RateColor>0</RateColor>
        <ServerID>0</ServerID>
        <MoreWrite>0</MoreWrite>
        <ClientState>0</ClientState>
    </ClientConfig>
往高手指点一二
发表于 2011-8-15 19:33:06 | 显示全部楼层
查找的话,可以用_XMLGetValue
参考:
#include <_XMLDomWrapper.au3>
$TEMP = "1.xml" 
_XMLFileOpen($TEMP) 
$t0 = _XMLGetValue("/ClientConfig/WriteSpeed")
$t1 = _XMLGetValue("/ClientConfig/Resolution")
MsgBox(0,$t0[1],$t1[1])
发表于 2011-8-15 19:42:14 | 显示全部楼层
用正则最方便,麻烦的方案可以先用StringInStr获取<WriteSpeed>的位置,然后获取前一位置之后的</WriteSpeed>的位置,用StringMid取中间位置的值,然后接着取下一个<WriteSpeed>的位置,循环下去
发表于 2011-8-16 20:19:39 | 显示全部楼层

#AutoIt3Wrapper_Run_Debug_Mode=y
#include <file.au3>

$countline=_FileCountLines(@ScriptDir & '\aa.xml')
$contentline=FileReadLine(@ScriptDir & '\aa.xml')

For $i=1 To $countline Step 1
        $content=FileReadLine(@ScriptDir & '\aa.xml',$i)
        If @error Then Exit
        If StringRegExp($content,'\<WriteSpeed\>0\</WriteSpeed\>',0)=0 Then ContinueLoop;;;;如果该行不匹配 <WriteSpeed>0</WriteSpeed> 就继续读取、检查下一行        
        _FileWriteToLine(@ScriptDir & '\aa.xml',$i,'<WriteSpeed>xyz</WriteSpeed>',1);;;用新行覆盖旧行
Next
 楼主| 发表于 2011-8-25 17:29:17 | 显示全部楼层
回复 4# ghl781258


    非常感谢
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-10-1 17:36 , Processed in 0.117437 second(s), 19 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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