AutoIt: 如何使用 AutoIt 解析,修改XML 文件
项目组这次要发布一个项目,需要实施人员根据现场的机器情况,修改项目配置文件的几个节点,为了减轻实施人员的工作负担,我应用AutoIt写了一个小界面,实施人员只需在该界面上点几个按钮,就能够完成文件的配置。
完成后的界面如下:
该AutoIt程序的难点就在xml的读取,修改。
我把读取,修改xml的AutoIt代码分享一下:
;调用微软自带的XML解析对象 $objXML = ObjCreate("Microsoft.XMLDOM") ;加载xml文件,$SourceFile就是需要解析的XML文件路径 $file_load = $objXML.load($SourceFile) ;写一个简单的函数,判断xml文件解析是否正确,如果是正确,下面的函数就返回True,否则退出程序(该函数很简单,这里就不贴了) check_xml_file_format($file_load) ;使用SelectNodes函数,应用xpath定位的方法,可以把xml文件中任意一个节点筛选出来,下面的写法就是简单的xpath写法 $colNodes = $objXML.documentElement.selectNodes("/ControlConfig/Page/Control[@Name='SliderControl']/BizControl[@DllName='SliderControl']") ;If we choose SelectSingleNode method, we won't need iterator. ;其实,使用SelectSingleNode方法,效率比SelectNodes更高,因为可以去掉For循环; ;$colNodes = $objXML.documentElement.selectSingleNode("/ControlConfig/Page/Control[@Name='SliderControl']/BizControl[@DllName='SliderControl']") For $objNode in $colNodes ConsoleWrite($objNode.Attributes.getNamedItem("ClassName").Text & @CRLF) If $server_mode = 1 Then ;下面的方法,是用来修改具体某节点的ClassName的值 ; 如果要修改节点的文本值,就要应用方法:$objNode.text = "节点文本值" $objNode.Attributes.getNamedItem("ClassName").Text = "TouchingMedia.ZhongShi.SliderControl.SliderServerPanelControl" Else $objNode.Attributes.getNamedItem("ClassName").Text = "TouchingMedia.ZhongShi.SliderControl.SliderClientPanelControl" EndIf Next $objXML.save($SourceFile)
以前使用Ruby解析xml,有大堆的库可以调用,应用AutoIt来解析xml,今天还是第一次,查阅了不少资料,也算有点收获,想要解决的问题都解决了,以后如果有需要,再来分享更多的信息!