>>>>>>>> ' 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 If >>>>>>>>>>>>
private static bool GetXMLNodeAttributeValue(string tcNode, string tcAttribute) >>>>> { >>>>> var v = oXmlDocument.SelectSingleNode(tcNode); >>>>> if (v == null) return false; >>>>> >>>>> foreach (XmlAttribute a in v.Attributes) >>>>> { >>>>> if (a.Name.ToUpper() == tcAttribute.ToUpper()) >>>>> return true; >>>>> } >>>>> return false; >>>>> }>>>>>Why do you believe .Clone is needed ?