zoukankan      html  css  js  c++  java
  • 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,今天还是第一次,查阅了不少资料,也算有点收获,想要解决的问题都解决了,以后如果有需要,再来分享更多的信息!

  • 相关阅读:
    Ajax学习笔记(1)
    html学习笔记(2)-字母大小写转换练习
    html学习笔记(1)--处理特殊字符以及其他的一些小细节
    jQuery学习笔记(8)--表格筛选
    jQuery学习笔记(7)--表格展开关闭
    Linux学习8-Linux常用命令(4)
    Linux学习7-Linux常用命令(3)
    Linux学习6-Linux常用命令(2)
    Linux学习6-Linux常用命令(1)
    Linux学习5-初学者注意事项
  • 原文地址:https://www.cnblogs.com/autotest/p/3419978.html
Copyright © 2011-2022 走看看