lcXmlFile = FULLPATH("...") loXmlDoc = CreateObject("Msxml2.DOMDocument.3.0") && MSXML 3.0, used by Xmltocursor() *loXmlDoc = CreateObject("Msxml2.DOMDocument.4.0") && MSXML 4.0, used by XmlAdaptor * Turn some switches off loXmlDoc.validateOnParse = .F. loXmlDoc.async = .F. loXmlDoc.resolveExternals = .F. * and On loXmlDom.preserveWhiteSpace = .T. * Load the xml document = loXmlDoc.Load(lcXmlFile) * Check for errors If loXmlDoc.parseError.errorCode <> 0 ?loXmlDoc.parseError.reason RETURN .F. ENDIF * Set SelectionLanguage to XPath = loXmlDoc.SetProperty("SelectionLanguage", "XPath") * Set namespace. 'ns' is an arbitrary name = loXmlDoc.SetProperty("SelectionNamespaces", "xmlns:ns='" + loXmlDoc.namespaces(0)+"'") * Read and set some items ? ChangeItem(loXmlDoc, "address", "Some New Address") ? ChangeItem(loXmlDoc, "contact", "New Name") * Save XML back loXmlDoc.Save(lcXmlFile) loXmlDoc = NULL RETURN FUNCTION ChangeItem(toXmlDom, tcAttributeName, tvNewValue) LOCAL loItem, llOK ? "Item:", tcAttributeName loItem = toXmlDom.selectSingleNode("//ns:field[@name='" + tcAttributeName + "']") llOK = NOT ISNULL(loItem) IF llOK ? "Before:", loItem.nodeTypedValue loItem.nodeTypedValue = tvNewValue ? "After:", loItem.nodeTypedValue loItem = NULL ENDIF RETURN llOK ENDFUNC>I decided to bring the data in my xfdf file into my app using lcstring = filetostr(nys.xfdf)