>> ' Get a XML node attribute >> ' expC1 Node >> ' expC2 Attribute >> Public Function GetXMLNodeAttributeValue(ByVal tcNode As String, ByVal tcAttribute As String) As Boolean >> Dim llFound As Boolean = False >> Dim loAttribute As XmlAttribute = Nothing >> >> ' Reset the values >> cMessage = "" >> cNodeAttribute = "" >> >> ' If we have a content >> If Not oXmlAttributeCollection Is Nothing Then >> oXmlAttributeCollection.RemoveAll() >> End If >> >> ' Select the node >> If oXmlNameSpaceManager Is Nothing Then >> oXmlNode = oXmlDocument.SelectSingleNode(tcNode) >> Else >> oXmlNode = oXmlDocument.SelectSingleNode(tcNode, oXmlNameSpaceManager) >> End If >> >> ' If the node does not exist >> If oXmlNode Is Nothing Then >> cMessage = oApp.StrTran(cNodeDoesNotExist, "##Node##", tcNode) >> Return False >> End If >> >> ' Assign the new attributes to this object >> oXmlAttributeCollection = oXmlNode.Clone.Attributes >> >> ' Scan the attribute collection >> For Each loAttribute In oXmlNode.Attributes >> >> ' If this is the one >> If UCase(loAttribute.Name) = UCase(tcAttribute) Then >> cNodeAttribute = loAttribute.Value >> llFound = True >> Exit For >> End If >> >> Next >> >> ' If we did not find it >> If Not llFound Then >> cMessage = oApp.StrTran(cAttributeDoesNotExist, "##Attribute##", tcAttribute) >> Return False >> End If >> >> Return True >> End Function >>Well, you certainly shouldn't have to clone (assuming the XmlDocument and the NameSpaceManager do not change - but since the method references objects which are external it's a bit difficult to know what else might be going on.
' If we have a content > If Not oXmlAttributeCollection Is Nothing Then > oXmlAttributeCollection.RemoveAll() > End IfThen he doesn't need cloning at all