>>>>>>> ' 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 ?