zoukankan      html  css  js  c++  java
  • 利用vbs读取XML中的某个指定子叶节点 (转)

    -------------------------------------------------------------------------------------------------------
    Function GetXml (strXmlFilePath,nodestring)
    Dim xmlDoc,xmlRoot
    Set xmlDoc = CreateObject("Microsoft.XMLDOM") '创建XML DOM对象
    xmlDoc.async = False  '控制加载模式为同步模式(xml树加载完毕后再执行后续代码)
    xmlDoc.load strXmlFilePath        '载入xml文件
    If xmlDoc.parseError.errorCode <> 0 Then
    MsgBox "XML文件格式不对,原因是:" & Chr(13) &  xmlDoc.parseError.reason
    Exit Function              
    End If
    Set xmlRoot = xmlDoc.documentElement    
    Nodes =  Split(nodestring, "\") 
    GetXml = xmlRecursion(xmlRoot,Nodes,1,true)  
    set xmlDoc = Nothing
    End Function



    Function xmlRecursion(byval xmlNode,NodeNames,NodeIndex,isContinue)
    If xmlNode.hasChildNodes Then
    If  xmlNode.childNodes.item(0).nodeName = "#text" Then
    xmlRecursion= xmlNode.childNodes.item(0).nodeValue
    isContinue = false
    End If              
    End If                      
    If xmlNode.hasChildNodes Then
    For Each childNodeItem In xmlNode.ChildNodes
    If  isContinue Then
    If childNodeItem.hasChildNodes and childNodeItem.nodeName = NodeNames(NodeIndex) Then
    xmlRecursion = xmlRecursion(childNodeItem,NodeNames,NodeIndex+1,isContinue)     
    End If           
    End If
    Next
    End If      
    End Function

    ---------------------------------------------------------------------------------------------------



    调用的时候直接写 GetXml(XML文件路径,节点路径)
    如:msgbox GetXml("c:\test2.xml","根节点\子节点")

    如果xml文件的内容是下面的内容的话,  msgbox GetXml("文件路径","ROOT\TestCase0\TestResult")  就会显示出 “3”,此函数不适取节点的属性。以后再完善吧,呵呵

    ------------------------------------------------------------------------
    <?xml version="1.0" encoding="GB2312"?>

    <ROOT>
    <TestCase0>
    <TestNumberOne>1</TestNumberOne>
    <TestNumberTwo>2</TestNumberTwo>
    <TestNumberThree>+</TestNumberThree>
    <TestResult>3</TestResult>
    </TestCase0>
    <TestCase1>
    <TestNumberOne>3</TestNumberOne>
    <TestNumberTwo>2</TestNumberTwo>
    <TestNumberThree>-</TestNumberThree>
    <TestResult>1</TestResult>
    </TestCase1>
    <TestCase3>
    <TestNumberOne>3</TestNumberOne>
    <TestNumberTwo>7</TestNumberTwo>
    <TestNumberThree>*</TestNumberThree>
    <TestResult>21</TestResult>
    </TestCase3>
    <TestCase2>
    <TestNumberOne>2</TestNumberOne>
    <TestNumberTwo>5</TestNumberTwo>
    <TestNumberThree>/</TestNumberThree>
    <TestResult>0.4</TestResult>
    </TestCase2>
    </ROOT>
    ------------------------------------------------------------------------
  • 相关阅读:
    购买电脑注意事项
    这个题用堆排序还是直接插入法呢?
    2011新历年最后一天了
    VC中对于Dialog,OnCreate()和OnInitDialog()是什么关系
    英语问题,(有些答案不对,不对的请说一声)
    尝鲜之在Github上搭建Octopress博客
    nodejs+express+ejs+mongoose实例
    Hadoop问题小记
    Storm资料汇总
    C# 集合类 Array Arraylist List Hashtable Dictionary Stack Queue 泛型
  • 原文地址:https://www.cnblogs.com/ryhan/p/2036537.html
Copyright © 2011-2022 走看看