原文作者:songfun 原文地址: http://bbs./thread-76590-1-1.html 目前,企业中对XML的应用越来越广泛,作为自动化测试的测试工程师,也应该掌握XML的读写操作。 '================================================================== ' Author : songfun ' Description : Read XML '================================================================== Dim strXML GetXml "c:\search.xml","TestResult" '这个函数的第一个参数表示xml文件所在路径,第二个参数表示希望获取到的xml节点名,请结合下列例子看 MsgBox strXML Function GetXml (ByVal strXmlFilePath,ByVal xmlNodeName) 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 xmlRecursion xmlRoot,xmlNodeName '调用xml递归函数传入指定的根和节点名 GetXml = True 'xmlRecursion (xmlRoot) End Function Function xmlRecursion(byval xmlNode,byval strNodeName) If xmlNode.nodeName = strNodeName And xmlNode.hasChildNodes Then If xmlNode.childNodes.item(0).nodeName = "#text" Then strXML = strXML & xmlNode.nodeName & ":" & xmlNode.childNodes.item(0).nodeValue & Chr(13) End If End If If xmlNode.hasChildNodes Then For Each childNodeItem In xmlNode.ChildNodes If childNodeItem.hasChildNodes Then xmlRecursion childNodeItem,strNodeName End If Next End If End Function 接着,自己构造一个xml文件(取个名字叫search.xml),如: <?xml version="1.0" encoding="GB2312"?> <ROOT> <TestCase> <TestNumberOne>1</TestNumberOne> <TestNumberTwo>2</TestNumberTwo> <TestNumberThree>+</TestNumberThree> <TestResult>3</TestResult> </TestCase> <TestCase> <TestNumberOne>3</TestNumberOne> <TestNumberTwo>2</TestNumberTwo> <TestNumberThree>-</TestNumberThree> <TestResult>1</TestResult> </TestCase> <TestCase> <TestNumberOne>3</TestNumberOne> <TestNumberTwo>7</TestNumberTwo> <TestNumberThree>*</TestNumberThree> <TestResult>21</TestResult> </TestCase> <TestCase> <TestNumberOne>2</TestNumberOne> <TestNumberTwo>5</TestNumberTwo> <TestNumberThree>/</TestNumberThree> <TestResult>0.4</TestResult> </TestCase> </ROOT> 很容易可以看出,这个文件存储的是书店存书的信息。 xml是一种半结构化的数据形势,现在随着web2.0的深入发展,他得到了越来越多的关注,越来越多的技术都围绕着他开展,新一代的经典数据库都宣称支持xml,还有很火热的ajax技术,等等。今天,我写的程序是用c#去解析xml文件,在写程序的过程中,了解到以下一些信息: 1. xml文件的第一行,是说明信息,但是他也是xml的第一个子节点,同时他不具有子节点,和属性。这在写解析程序的时候很重要。 2. 一开始,我想象的写一个一本万利的xml管理类 ,显然是不可能的。因为,每一个xml文件的结构都不一样,而且如果应用该xml文件也不经相同。因此,我们只能够熟练掌握xml处理的两种基本模式,流模式和文档对象模式,然后在每一次应用的基础上重新编写代码,对其进行解析。 3. xml是大小写敏感的; 4. 更多的还有待发现... |
|