{"record":{"id":"8a469856aed8a5fb","repo":"pentaho/pentaho-kettle","slug":"jobentrymsaccessbulkload-meta-unableloadxml","errorCode":"JobEntryMSAccessBulkLoad.Meta.UnableLoadXML","errorMessage":"JobEntryMSAccessBulkLoad.Meta.UnableLoadXML","messagePattern":"JobEntryMSAccessBulkLoad\\.Meta\\.UnableLoadXML","errorType":"exception","errorClass":"KettleXMLException","httpStatus":null,"severity":"error","filePath":"plugins/ms-access/impl/src/main/java/org/pentaho/di/job/entries/msaccessbulkload/JobEntryMSAccessBulkLoad.java","lineNumber":200,"sourceCode":"      int nrFields = XMLHandler.countNodes( fields, \"field\" );\n      source_filefolder = new String[nrFields];\n      delimiter = new String[nrFields];\n      source_wildcard = new String[nrFields];\n      target_Db = new String[nrFields];\n      target_table = new String[nrFields];\n\n      // Read them all...\n      for ( int i = 0; i < nrFields; i++ ) {\n        Node fnode = XMLHandler.getSubNodeByNr( fields, \"field\", i );\n\n        source_filefolder[i] = XMLHandler.getTagValue( fnode, \"source_filefolder\" );\n        source_wildcard[i] = XMLHandler.getTagValue( fnode, \"source_wildcard\" );\n        delimiter[i] = XMLHandler.getTagValue( fnode, \"delimiter\" );\n        target_Db[i] = XMLHandler.getTagValue( fnode, \"target_db\" );\n        target_table[i] = XMLHandler.getTagValue( fnode, \"target_table\" );\n      }\n    } catch ( KettleXMLException xe ) {\n      throw new KettleXMLException( BaseMessages.getString( PKG, \"JobEntryMSAccessBulkLoad.Meta.UnableLoadXML\", xe\n        .getMessage() ), xe );\n    }\n  }\n\n  public void loadRep( Repository rep, IMetaStore metaStore, ObjectId id_jobentry, List<DatabaseMeta> databases,\n    List<SlaveServer> slaveServers ) throws KettleException {\n    try {\n      include_subfolders = rep.getJobEntryAttributeBoolean( id_jobentry, \"include_subfolders\" );\n      add_result_filenames = rep.getJobEntryAttributeBoolean( id_jobentry, \"add_result_filenames\" );\n      is_args_from_previous = rep.getJobEntryAttributeBoolean( id_jobentry, \"is_args_from_previous\" );\n\n      limit = rep.getJobEntryAttributeString( id_jobentry, \"limit\" );\n      success_condition = rep.getJobEntryAttributeString( id_jobentry, \"success_condition\" );\n\n      // How many arguments?\n      int argnr = rep.countNrJobEntryAttributes( id_jobentry, \"source_filefolder\" );\n      source_filefolder = new String[argnr];\n      source_wildcard = new String[argnr];","sourceCodeStart":182,"sourceCodeEnd":218,"githubUrl":"https://github.com/pentaho/pentaho-kettle/blob/f3058517a153da500bf4551f46d79b91bf8ec552/plugins/ms-access/impl/src/main/java/org/pentaho/di/job/entries/msaccessbulkload/JobEntryMSAccessBulkLoad.java#L182-L218","documentation":"KettleXMLException thrown by JobEntryMSAccessBulkLoad.loadXML when the job entry's XML definition cannot be parsed into the entry's fields (files, wildcards, delimiters, target db/table). It wraps the underlying parse exception and localizes the message via the ms-access messages package. The job entry metadata is unusable until the XML is fixed.","triggerScenarios":"Calling loadXML(Node stepnode, ...) with a malformed or unexpected XML node: missing 'files'/'file' sub-elements, wrong tag names (source_wildcard, delimiter, target_db, target_table), or a node structure produced by a different plugin version.","commonSituations":"Hand-editing a .kjb job file and corrupting the MS Access bulk load entry XML; opening a job exported from a newer/older Pentaho version where tag names changed; truncated or encoding-damaged .kjb files; repository round-trips that mangle the node tree.","solutions":["Open the .kjb file in a text editor and validate/correct the <entry> XML block for the MS Access bulk load node (check tags source_wildcard, delimiter, target_db, target_table).","Re-open the job in Spoon, delete and re-create the MS Access Bulk Load job entry so Spoon regenerates a valid XML block.","Check Pentaho/PDI version compatibility: the job file may come from a newer PDI release; upgrade the server or re-export from the matching version.","If the exception message doesn't pinpoint the cause, inspect the wrapped KettleXMLException cause (xe.getMessage()) for the exact XMLHandler failure."],"exampleFix":"// before (hand-edited .kjb, tag renamed by mistake)\n<file><source_wild Card>/*.mdb</source_wildCard></file>\n// after\n<file><source_wildcard>/*.mdb</source_wildcard><delimiter>;</delimiter><target_db>output.mdb</target_db><target_table>TARGET</target_table></file>","handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":"try { jobEntry.loadXML( stepnode, databases, metaStore ); } catch ( KettleXMLException e ) { logError( \"Bad MS Access bulk load XML: \" + e.getCause(), e ); /* re-create entry or repair .kjb */ }","preventionTips":["Don't hand-edit the <entry> XML block of the MS Access bulk load node; edit via Spoon","Keep PDI versions consistent between designers and servers","Keep .kjb files under version control to diff accidental tag changes","Always check the cause chain for the underlying XMLHandler error"],"tags":["kettle","xml-parse","job-entry","metadata","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"}