如何在我的例子中获得节点" [StepHeader]"作为在vbscript中动态添加新子节点的对象

时间:2014-04-21 08:43:39

标签: xml vbscript

<Report TcName=" Testing" >
  <TestSuite Desc="ADI [UK]">
    <TestCase TcName=" Testing" >
      <Step ID="Step 1" Desc=" ">
        <StepDetails Status="4"  StepType="Step">Step 1 Info </StepDetails>
        <StepDetails Status="3"  StepType="Step">Step 1 Warning </StepDetails>
        <StepDetails Status="1" StepType="Step">Step 1 passed </StepDetails>
        <StepHeader StepType="STEPHEADER" Status="2">
          <StepDetails StepType="STEPHEADER">Step Header 1 Info </StepDetails>
          <StepDetails Status="3" StepType="STEPHEADER">Step Header 1 Warning </StepDetails>
          <StepDetails Status="1" StepType="STEPHEADER">Step Header 1 passed </StepDetails>
          <StepDetails Status="2"  StepType="STEPHEADER" ScreenShotPath="D:\Git\automation\Projects\SOA\ADI\Reports\_Screenshots\ADI_UK_SOA-API_QAT2_201442110481\ADI SOA-API 4_21_2014 10_48_09 AM.png">Step Header 1 failed </StepDetails>
          <StepDetails Status="4"  StepType="STEPHEADER">Step Header 1 DONE </StepDetails>
          <StepHeader>
            <StepDetails Status="4"StepType="STEPHEADER">Step Header 2 Info </StepDetails>
            <StepDetails Status="3"StepType="STEPHEADER">Step Header 2 Warning </StepDetails>
            <StepDetails Status="1" StepType="STEPHEADER">Step Header 2 passed </StepDetails>
          </StepHeader>
        </StepHeader>
      </Step>
    </TestCase>
  </TestSuite>
</Report>

如何在我的例子中获取节点&#34; [StepHeader]&#34;作为在vbscript中动态添加新子节点的对象,我使用QTP创建XML文件。

1 个答案:

答案 0 :(得分:0)

使用.selectSingleNode和合适的XPATH查询来选择节点,使用.createElement创建一个新的StepDetails元素,使用.appendChild将元素追加到找到的节点:

  Dim oFS      : Set oFS      = CreateObject("Scripting.FileSystemObject")
  Dim sFSpec   : sFSpec       = goFS.GetAbsolutePathName("..\testdata\xml\23193903.xml")
  Dim objMSXML : Set objMSXML = CreateObject("Msxml2.DOMDocument")
  objMSXML.setProperty "SelectionLanguage", "XPath"
  objMSXML.async = False
  objMSXML.load sFSpec

  If 0 = objMSXML.parseError Then
     Dim sXPath : sXPath    = "/Report/TestSuite/TestCase/Step/StepHeader/StepHeader"
     Dim ndFnd  : Set ndFnd = objMSXML.selectSingleNode(sXPath)
     If ndFnd Is Nothing Then
        WScript.Echo sXPath, "not found"
     Else
        WScript.Echo ndFnd.xml
        ndFnd.AppendChild objMSXML.createElement("StepDetails")
        WScript.Echo ndFnd.xml
     End If
  Else
     WScript.Echo objMSXML.parseError.reason
  End If

输出:

<StepHeader>
        <StepDetails Status="4" StepType="STEPHEADER">Step Header 2 Info </StepDetails>
        <StepDetails Status="3" StepType="STEPHEADER">Step Header 2 Warning </StepDetails>
        <StepDetails Status="1" StepType="STEPHEADER">Step Header 2 passed </StepDetails>
</StepHeader>
<StepHeader>
        <StepDetails Status="4" StepType="STEPHEADER">Step Header 2 Info </StepDetails>
        <StepDetails Status="3" StepType="STEPHEADER">Step Header 2 Warning </StepDetails>
        <StepDetails Status="1" StepType="STEPHEADER">Step Header 2 passed </StepDetails>
        <StepDetails/></StepHeader>

使用Docs查找使用的功能。