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