Afields(laFlds,lcCursorName) lcXML = Filetostr(tcFilename) loXMLDocument = Createobject("MSXML2.DomDocument") Try loXMLDocument.LoadXML(lcXML) loXMLNodeList = loXMLDocument.selectNodes("ArrayOfMaterial/Material") lnLength = loXMLNodeList.Length For Lni=0 To lnLength-1 loXMLNode = loXMLNodeList.Item(Lni) Select(lcCursorName) Append Blank For lnj=1 To Alen(laFlds,1) lcFieldName = laFlds[lnj,1] lcFieldType = laFlds[lnj,2] loXMLLineNode = loXMLNode.selectSingleNode(lcFieldName) If Type("loXMLLineNode")="O" And !Isnull(loXMLLineNode) leValue = .Null. Do Case Case Inlist(lcFieldType,"C","M") leValue = Alltrim(loXMLLineNode.Text) Case lcFieldType="N" leValue = Val(loXMLLineNode.Text) Case lcFieldType="T" leValue = Ctot(Strtran(loXMLLineNode.Text,"+","-")) Endcase If !Isnull(leValue) Replace &lcCursorName..&lcFieldName With leValue Endif Endif EndforOk. the AFIELDS returns fieldname as upper character set... and of course selectSingleNode returns .null.