SetXMLElementProperty (QTP, TestComplete, VBScript)
Parent page: Service Functions – MSXMLDOM (QTP, TestComplete, VBScript)
Description
Dispatcher type function. Sets child node by name: attribute, text, comment, CData
See Test Code section for examples.
Implementation
Public Function SetXMLElementProperty(ByRef objXMLElement, ByVal sProperty, ByVal intIndex, ByVal sPropertyValue)
Dim boolRC
Dim sAttrName
If objXMLElement is Nothing Then
SetXMLElementProperty = False
Exit Function
End If
If intIndex = "" Then intIndex = -1
If Not isNumeric(intIndex) Then
SetXMLElementProperty = False
Exit Function
End If
If Left(UCase(sProperty), 6) = "#ATTR:" Then
sAttrName = Mid(sProperty, 7)
sProperty = "#ATTR:"
Else
sProperty = UCase(sProperty)
End If
Select Case sProperty
Case "INNERTEXT"
objXMLElement.Text = sPropertyValue
boolRC = True
Case "#ATTR:"
boolRC = p_SetXMLElementAttrText(objXMLElement, sAttrName, sPropertyValue)
Case "#TEXT"
If intIndex = -1 Then
boolRC = p_SetXMLElementText(objXMLElement, sPropertyValue)
Else
boolRC = p_SetXMLElementTextByIndex(objXMLElement, intIndex, sPropertyValue)
End If
Case "#COMMENT"
If intIndex = -1 Then
boolRC = p_SetXMLElementComment(objXMLElement, sPropertyValue)
Else
boolRC = p_SetXMLElementCommentByIndex(objXMLElement, intIndex, sPropertyValue)
End If
Case "#CDATA"
If intIndex = -1 Then
boolRC = p_SetXMLElementCData(objXMLElement, sPropertyValue)
Else
boolRC = p_SetXMLElementCDataByIndex(objXMLElement, intIndex, sPropertyValue)
End If
Case Else
boolRC = False
End Select
SetXMLElementProperty = boolRC
End Function
Test Code
Set objXMLDoc = CreateXMLDOM("test")
If objXMLDoc is Nothing Then
Log.Error "CreateXMLDOM failed"
End If
Set objXMLParent = CreateChildElementByName(objXMLDoc.DocumentElement, "case", "test case")
If objXMLParent is Nothing Then
Log.Error "CreateChildElementByName failed"
End If
Set objXMLNode = CreateChildElementByName(objXMLParent, "step", "test step")
If objXMLParent is Nothing Then
Log.Error "CreateChildElementByName failed"
End If
If objXMLNode.BaseName <> "step" Then
Log.Error "CreateChildElementByName failed"
End If
If objXMLNode.Text <> "test step" Then
Log.Error "CreateChildElementByName failed"
End If
Set objXMLNode = ChildElementByName(objXMLParent, "case")
If Not (objXMLNode is Nothing) Then
Log.Error "ChildElementByName failed"
End If
Set objXMLNode = ChildElementByName(objXMLParent, "step")
If objXMLNode is Nothing Then
Log.Error "ChildElementByName failed"
End If
If objXMLNode.BaseName <> "step" Then
Log.Error "ChildElementByName failed"
End If
If objXMLNode.Text <> "test step" Then
Log.Error "ChildElementByName failed"
End If
Log.Message("XMLDOM XML Node Property Objects")
boolRC = GetXMLElementProperty(objXMLNode, "innertext", "", sValue)
boolRC = boolRC AND (sValue = "test step")
If Not boolRC Then
Log.Error "GetXMLElementProperty failed"
End If
boolRC = GetXMLElementProperty(objXMLNode, "#text", "", sValue)
boolRC = boolRC AND (sValue = "test step")
If Not boolRC Then
Log.Error "GetXMLElementProperty failed"
End If
boolRC = GetXMLElementProperty(objXMLNode, "#text", -1, sValue)
boolRC = boolRC AND (sValue = "test step")
If Not boolRC Then
Log.Error "GetXMLElementProperty failed"
End If
boolRC = SetXMLElementProperty(objXMLNode, "innertext", -1, "step instructions")
If Not boolRC Then
Log.Error "SetXMLElementProperty failed"
End If
boolRC = GetXMLElementProperty(objXMLNode, "#text", -1, sValue)
boolRC = boolRC AND (sValue = "step instructions")
If Not boolRC Then
Log.Error "GetXMLElementProperty failed"
End If
boolRC = SetXMLElementProperty(objXMLNode, "#Attr:id", "", "123-456")
If Not boolRC Then
Log.Error "SetXMLElementProperty failed"
End If
boolRC = GetXMLElementProperty(objXMLNode, "#Attr:ID", "", sValue)
boolRC = boolRC AND (sValue = "123-456")
If boolRC Then
Log.Error "GetXMLElementProperty failed"
End If
boolRC = GetXMLElementProperty(objXMLNode, "#Attr:id", "", sValue)
boolRC = boolRC AND (sValue = "123-456")
If Not boolRC Then
Log.Error "GetXMLElementProperty failed"
End If
boolRC = SetXMLElementProperty(objXMLNode, "#Attr:Id", "", "AXBN")
If Not boolRC Then
Log.Error "SetXMLElementProperty failed"
End If
boolRC = GetXMLElementProperty(objXMLNode, "#Attr:Id", "", sValue)
boolRC = boolRC AND (sValue = "AXBN")
If Not boolRC Then
Log.Error "GetXMLElementProperty failed"
End If
boolRC = SetXMLElementProperty(objXMLNode, "#text", 0, "entry1")
If Not boolRC Then
Log.Error "SetXMLElementProperty failed"
End If
boolRC = SetXMLElementProperty(objXMLNode, "#text", 1, "entry2")
If Not boolRC Then
Log.Error "SetXMLElementProperty failed"
End If
boolRC = GetXMLElementProperty(objXMLNode, "#text", -1, sValue)
boolRC = boolRC AND (sValue = "entry1entry2")
If Not boolRC Then
Log.Error "GetXMLElementProperty failed"
End If
boolRC = SetXMLElementProperty(objXMLNode, "#text", 5, "entry5loop")
If Not boolRC Then
Log.Error "SetXMLElementProperty failed"
End If
boolRC = GetXMLElementProperty(objXMLNode, "#text", -1, sValue)
boolRC = boolRC AND (sValue = "entry1entry2entry5loopentry5loopentry5loopentry5loop")
If Not boolRC Then
Log.Error "GetXMLElementProperty failed"
End If
boolRC = SetXMLElementProperty(objXMLNode, "#text", "", "textentry")
If Not boolRC Then
Log.Error "SetXMLElementProperty failed"
End If
boolRC = GetXMLElementProperty(objXMLNode, "#text", 0, sValue)
boolRC = boolRC AND (sValue = "textentry")
If Not boolRC Then
Log.Error "GetXMLElementProperty failed"
End If
boolRC = GetXMLElementProperty(objXMLNode, "#text", -1, sValue)
boolRC = boolRC AND (sValue = "textentry")
If Not boolRC Then
Log.Error "GetXMLElementProperty failed"
End If
sValue = ChildElementValueByName(objXMLParent, "step")
If (sValue <> "textentry") Then
Log.Error "ChildElementValueByName failed"
End If
boolRC = SetXMLElementProperty(objXMLNode, "#comment", 0, "comment1")
If Not boolRC Then
Log.Error "SetXMLElementProperty failed"
End If
boolRC = SetXMLElementProperty(objXMLNode, "#comment", 2, "comment2")
If Not boolRC Then
Log.Error "SetXMLElementProperty failed"
End If
boolRC = GetXMLElementProperty(objXMLNode, "#comment", "", sValue)
boolRC = boolRC AND (sValue = "comment1comment2comment2")
If Not boolRC Then
Log.Error "GetXMLElementProperty failed"
End If
boolRC = SetXMLElementProperty(objXMLNode, "#cdata", 0, "cd-section1")
If Not boolRC Then
Log.Error "SetXMLElementProperty failed"
End If
boolRC = SetXMLElementProperty(objXMLNode, "#cdata", 2, "cd-section2")
If Not boolRC Then
Log.Error "SetXMLElementProperty failed"
End If
boolRC = GetXMLElementProperty(objXMLNode, "#cdata", "", sValue)
boolRC = boolRC AND (sValue = "cd-section1cd-section2cd-section2")
If Not boolRC Then
Log.Error "GetXMLElementProperty failed"
End If
Set objXMLNode = SetChildElementByAttr(objXMLParent, "step", "alpha", "System Step")
If objXMLNode is Nothing Then
Log.Error "SetChildElementByAttr failed"
End If
boolRC = GetXMLElementProperty(objXMLNode, "#text", -1, sValue)
boolRC = boolRC AND (sValue = "System Step")
If Not boolRC Then
Log.Error "SetChildElementByAttr failed"
End If
sValue = GetChildElementValueByAttr(objXMLParent, "step", "alpha")
If sValue <> "System Step" Then
Log.Error "GetChildElementValueByAttr failed"
End If

