{"record":{"id":"ea5da1c142d310e3","repo":"pentaho/pentaho-kettle","slug":"jobexportrepository-meta-unableloadxml","errorCode":"JobExportRepository.Meta.UnableLoadXML","errorMessage":"JobExportRepository.Meta.UnableLoadXML","messagePattern":"JobExportRepository\\.Meta\\.UnableLoadXML","errorType":"error_code","errorClass":"KettleXMLException","httpStatus":null,"severity":"error","filePath":"plugins/export-repository/impl/src/main/java/org/pentaho/di/job/entries/exportrepository/JobEntryExportRepository.java","lineNumber":196,"sourceCode":"      repositoryname = XMLHandler.getTagValue( entrynode, \"repositoryname\" );\n      username = XMLHandler.getTagValue( entrynode, \"username\" );\n      password = Encr.decryptPasswordOptionallyEncrypted( XMLHandler.getTagValue( entrynode, \"password\" ) );\n      targetfilename = XMLHandler.getTagValue( entrynode, \"targetfilename\" );\n      iffileexists = XMLHandler.getTagValue( entrynode, \"iffileexists\" );\n      export_type = XMLHandler.getTagValue( entrynode, \"export_type\" );\n      directoryPath = XMLHandler.getTagValue( entrynode, \"directoryPath\" );\n      add_date = \"Y\".equalsIgnoreCase( XMLHandler.getTagValue( entrynode, \"add_date\" ) );\n      add_time = \"Y\".equalsIgnoreCase( XMLHandler.getTagValue( entrynode, \"add_time\" ) );\n      SpecifyFormat = \"Y\".equalsIgnoreCase( XMLHandler.getTagValue( entrynode, \"SpecifyFormat\" ) );\n      date_time_format = XMLHandler.getTagValue( entrynode, \"date_time_format\" );\n      createfolder = \"Y\".equalsIgnoreCase( XMLHandler.getTagValue( entrynode, \"createfolder\" ) );\n      newfolder = \"Y\".equalsIgnoreCase( XMLHandler.getTagValue( entrynode, \"newfolder\" ) );\n      add_result_filesname = \"Y\".equalsIgnoreCase( XMLHandler.getTagValue( entrynode, \"add_result_filesname\" ) );\n      nr_errors_less_than = XMLHandler.getTagValue( entrynode, \"nr_errors_less_than\" );\n      success_condition = XMLHandler.getTagValue( entrynode, \"success_condition\" );\n\n    } catch ( KettleXMLException xe ) {\n      throw new KettleXMLException( BaseMessages.getString( PKG, \"JobExportRepository.Meta.UnableLoadXML\" ), 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      repositoryname = rep.getJobEntryAttributeString( id_jobentry, \"repositoryname\" );\n      username = rep.getJobEntryAttributeString( id_jobentry, \"username\" );\n      password =\n        Encr.decryptPasswordOptionallyEncrypted( rep.getJobEntryAttributeString( id_jobentry, \"password\" ) );\n      targetfilename = rep.getJobEntryAttributeString( id_jobentry, \"targetfilename\" );\n      iffileexists = rep.getJobEntryAttributeString( id_jobentry, \"iffileexists\" );\n      export_type = rep.getJobEntryAttributeString( id_jobentry, \"export_type\" );\n      directoryPath = rep.getJobEntryAttributeString( id_jobentry, \"directoryPath\" );\n      add_date = rep.getJobEntryAttributeBoolean( id_jobentry, \"add_date\" );\n      add_time = rep.getJobEntryAttributeBoolean( id_jobentry, \"add_time\" );\n      SpecifyFormat = rep.getJobEntryAttributeBoolean( id_jobentry, \"SpecifyFormat\" );\n      date_time_format = rep.getJobEntryAttributeString( id_jobentry, \"date_time_format\" );","sourceCodeStart":178,"sourceCodeEnd":214,"githubUrl":"https://github.com/pentaho/pentaho-kettle/blob/f3058517a153da500bf4551f46d79b91bf8ec552/plugins/export-repository/impl/src/main/java/org/pentaho/di/job/entries/exportrepository/JobEntryExportRepository.java#L178-L214","documentation":"JobEntryExportRepository.loadXML wraps KettleXMLException raised while parsing the job entry's XML node with the localized message 'JobExportRepository.Meta.UnableLoadXML'. It means the job (.kjb) XML for this Export Repository entry could not be parsed.","triggerScenarios":"Loading a .kjb whose export-repository job entry node has malformed or missing tags (e.g. 'success_condition', 'nr_errors_less_than'), typically from version skew or manual edits.","commonSituations":"Hand-editing job files; opening jobs exported from a different PDI version; truncated/corrupt XML files.","solutions":["Validate the <entry> XML block for this job entry in the .kjb file","Recreate the job entry in Spoon to regenerate valid XML","Compare against a working job file from the same PDI version"],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":"// validate XML before loading job\nDocumentBuilderFactory.newInstance().newDocumentBuilder().parse( new File( kjbPath ) );","typeGuard":null,"tryCatchPattern":"try { jobMeta.loadXml( file ); } catch ( KettleXMLException e ) { log.error( \"Job entry XML corrupt: \" + e.getCause(), e ); }","preventionTips":["Avoid manual edits to .kjb files","Regenerate entries in Spoon when XML is suspect","Match PDI versions between authoring and runtime"],"tags":["xml","job-entry","kjb","deserialization"],"backgroundTag":"schema-validation-failed","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"}