{"record":{"id":"9446855ed10386d5","repo":"pentaho/pentaho-kettle","slug":"unable-to-load-step-info-from-xml-accessinputmeta","errorCode":null,"errorMessage":"Unable to load step info from XML","messagePattern":"Unable to load step info from XML","errorType":"exception","errorClass":"KettleXMLException","httpStatus":null,"severity":"error","filePath":"plugins/ms-access/impl/src/main/java/org/pentaho/di/trans/steps/accessinput/AccessInputMeta.java","lineNumber":783,"sourceCode":"        inputFields[i].setFormat( XMLHandler.getTagValue( fnode, \"format\" ) );\n        inputFields[i].setCurrencySymbol( XMLHandler.getTagValue( fnode, \"currency\" ) );\n        inputFields[i].setDecimalSymbol( XMLHandler.getTagValue( fnode, \"decimal\" ) );\n        inputFields[i].setGroupSymbol( XMLHandler.getTagValue( fnode, \"group\" ) );\n\n      }\n\n      // Is there a limit on the number of rows we process?\n      rowLimit = Const.toLong( XMLHandler.getTagValue( stepnode, \"limit\" ), 0L );\n      shortFileFieldName = XMLHandler.getTagValue( stepnode, \"shortFileFieldName\" );\n      pathFieldName = XMLHandler.getTagValue( stepnode, \"pathFieldName\" );\n      hiddenFieldName = XMLHandler.getTagValue( stepnode, \"hiddenFieldName\" );\n      lastModificationTimeFieldName = XMLHandler.getTagValue( stepnode, \"lastModificationTimeFieldName\" );\n      uriNameFieldName = XMLHandler.getTagValue( stepnode, \"uriNameFieldName\" );\n      rootUriNameFieldName = XMLHandler.getTagValue( stepnode, \"rootUriNameFieldName\" );\n      extensionFieldName = XMLHandler.getTagValue( stepnode, \"extensionFieldName\" );\n      sizeFieldName = XMLHandler.getTagValue( stepnode, \"sizeFieldName\" );\n    } catch ( Exception e ) {\n      throw new KettleXMLException( \"Unable to load step info from XML\", e );\n    }\n  }\n\n  public void allocate( int nrfiles, int nrfields ) {\n    allocateFiles( nrfiles );\n    allocateFields( nrfields );\n  }\n\n  public void allocateFiles( int nrfiles ) {\n    fileName = new String[nrfiles];\n    fileMask = new String[nrfiles];\n    excludeFileMask = new String[nrfiles];\n    fileRequired = new String[nrfiles];\n    includeSubFolders = new String[nrfiles];\n  }\n\n  public void allocateFields( int nrfields ) {\n    inputFields = new AccessInputField[nrfields];","sourceCodeStart":765,"sourceCodeEnd":801,"githubUrl":"https://github.com/pentaho/pentaho-kettle/blob/f3058517a153da500bf4551f46d79b91bf8ec552/plugins/ms-access/impl/src/main/java/org/pentaho/di/trans/steps/accessinput/AccessInputMeta.java#L765-L801","documentation":"KettleXMLException thrown by AccessInputMeta.loadXML when any exception occurs while reading the step's configuration from its XML node (file lists, field definitions, dynamic-field names, etc.). The generic message 'Unable to load step info from XML' wraps the underlying parse error in its cause.","triggerScenarios":"loadXML(Node stepnode, ...) catching Exception: stepnode is missing expected tags (filename, field, filename_Field, lastModificationTimeFieldName, etc.), attributes have unexpected structure, or the .ktr was produced by an incompatible PDI version.","commonSituations":"Hand-editing .ktr files and dropping a required tag; merging transformations by copy/paste with corrupted node content; opening a transformation saved by a newer PDI release in an older one; XML encoding issues after round-tripping through other tools.","solutions":["Inspect the cause exception in the stack trace to find which tag/attribute failed.","Open the transformation in Spoon, delete and re-create the Access Input step to regenerate valid XML.","Compare the step's XML block in the .ktr against a working Access Input step and restore missing/malformed tags.","Align PDI versions — if the .ktr comes from a newer release, open it with a matching or newer Spoon version."],"exampleFix":"// before (missing <field> children breaks allocation)\n<fields>\n</fields>\n// after\n<fields>\n  <field><name>id</name><column>ID</column><type>Integer</type></field>\n</fields>","handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":"try { stepMeta.loadXML( stepnode, databases, metaStore ); } catch ( KettleXMLException e ) { logError( \"Access Input XML invalid: \" + e.getCause(), e ); /* re-create the step in Spoon */ }","preventionTips":["Never hand-edit the Access Input <step> block in .ktr files","Keep transformations within one PDI version family","Diff .ktr files in version control to catch dropped tags","Re-create the step rather than patching XML when it fails to load"],"tags":["kettle","xml-parse","step-metadata","access-input","pdi"],"backgroundTag":"xml-parse-error","analyzedSha":"f3058517a153da500bf4551f46d79b91bf8ec552","analyzedAt":"2026-09-13T14:04:16.340Z","contentChangedAt":"2026-09-13T14:04:16.340Z","schemaVersion":2},"datasetVersion":"2026-09-20T23:17:15.980Z"}