{"record":{"id":"54d6fbe20398150b","repo":"pentaho/pentaho-kettle","slug":"jobentrydeleteresultfilenames-cannotloadfromxml","errorCode":null,"errorMessage":"JobEntryDeleteResultFilenames.CanNotLoadFromXML","messagePattern":"JobEntryDeleteResultFilenames\\.CanNotLoadFromXML","errorType":"exception","errorClass":"KettleXMLException","httpStatus":null,"severity":"error","filePath":"engine/src/main/java/org/pentaho/di/job/entries/deleteresultfilenames/JobEntryDeleteResultFilenames.java","lineNumber":102,"sourceCode":"    retval.append( \"      \" ).append( XMLHandler.addTagValue( \"foldername\", foldername ) );\n    retval.append( \"      \" ).append( XMLHandler.addTagValue( \"specify_wildcard\", specifywildcard ) );\n    retval.append( \"      \" ).append( XMLHandler.addTagValue( \"wildcard\", wildcard ) );\n    retval.append( \"      \" ).append( XMLHandler.addTagValue( \"wildcardexclude\", wildcardexclude ) );\n\n    return retval.toString();\n  }\n\n  public void loadXML( Node entrynode, List<DatabaseMeta> databases, List<SlaveServer> slaveServers,\n    Repository rep, IMetaStore metaStore ) throws KettleXMLException {\n    try {\n      super.loadXML( entrynode, databases, slaveServers );\n      foldername = XMLHandler.getTagValue( entrynode, \"foldername\" );\n      specifywildcard = \"Y\".equalsIgnoreCase( XMLHandler.getTagValue( entrynode, \"specify_wildcard\" ) );\n      wildcard = XMLHandler.getTagValue( entrynode, \"wildcard\" );\n      wildcardexclude = XMLHandler.getTagValue( entrynode, \"wildcardexclude\" );\n\n    } catch ( KettleXMLException xe ) {\n      throw new KettleXMLException( BaseMessages.getString(\n        PKG, \"JobEntryDeleteResultFilenames.CanNotLoadFromXML\", xe.getMessage() ) );\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      foldername = rep.getJobEntryAttributeString( id_jobentry, \"foldername\" );\n      specifywildcard = rep.getJobEntryAttributeBoolean( id_jobentry, \"specify_wildcard\" );\n      wildcard = rep.getJobEntryAttributeString( id_jobentry, \"wildcard\" );\n      wildcardexclude = rep.getJobEntryAttributeString( id_jobentry, \"wildcardexclude\" );\n    } catch ( KettleException dbe ) {\n      throw new KettleXMLException( BaseMessages.getString(\n        PKG, \"JobEntryDeleteResultFilenames.CanNotLoadFromRep\", \"\" + id_jobentry, dbe.getMessage() ) );\n    }\n  }\n\n  public void saveRep( Repository rep, IMetaStore metaStore, ObjectId id_job ) throws KettleException {","sourceCodeStart":84,"sourceCodeEnd":120,"githubUrl":"https://github.com/pentaho/pentaho-kettle/blob/f3058517a153da500bf4551f46d79b91bf8ec552/engine/src/main/java/org/pentaho/di/job/entries/deleteresultfilenames/JobEntryDeleteResultFilenames.java#L84-L120","documentation":"Thrown when the XML for a 'Delete Result Filenames' job entry cannot be parsed during loadXML(). It wraps the original KettleXMLException and includes its message. Indicates the job entry's XML node is malformed or missing expected tags (foldername, specify_wildcard, wildcard, wildcardexclude).","triggerScenarios":"Calling loadXML() on a .kjb fragment where XMLHandler.getTagValue for the entry's tags throws a KettleXMLException — typically malformed XML structure or wrong node type passed in.","commonSituations":"Truncated or hand-edited .kjb files; schema drift between Pentaho versions; loading a node from the wrong entry type; encoding corruption in the XML file.","solutions":["Validate the .kjb XML for well-formedness and presence of the DeleteResultFilenames tags","Regenerate the job entry from Spoon to produce valid XML","Confirm you pass the correct <entry> node to loadXML()","Read xe.getMessage() embedded in the thrown error to locate the parse failure"],"exampleFix":"// before\nNode entrynode = XMLHandler.getSubNode(je, \"entry\"); // could be null / wrong type\nentry.loadXML(entrynode, databases, slaveServers, rep, metaStore);\n// after\nNode entrynode = XMLHandler.getSubNode(je, \"entry\");\nif (entrynode == null) throw new KettleXMLException(\"No <entry> node found\");\ntry {\n  entry.loadXML(entrynode, databases, slaveServers, rep, metaStore);\n} catch (KettleXMLException e) {\n  logError(\"XML malformed: \" + e.getMessage());\n  throw e;\n}","handlingStrategy":"try-catch","validationCode":"// validate XML before loadXML\nDocument doc = XMLHandler.loadXMLFile(new File(kjbPath));\nif (doc == null) throw new IllegalArgumentException(\"Not valid XML: \" + kjbPath);\nNode entry = XMLHandler.getSubNode(doc.getDocumentElement(), \"entry\");\nif (entry == null || XMLHandler.getTagValue(entry, \"foldername\") == null\n    && XMLHandler.getSubNode(entry, \"foldername\") == null) {\n  logBasic(\"Warning: DeleteResultFilenames entry has no foldername tag\");\n}","typeGuard":"boolean isValidEntryNode(Node node) {\n  return node != null && \"entry\".equals(node.getNodeName());\n}","tryCatchPattern":"try {\n  entry.loadXML(entrynode, databases, slaveServers, rep, metaStore);\n} catch (KettleXMLException e) {\n  logError(\"CanNotLoadFromXML: \" + e.getMessage());\n  throw e;\n}","preventionTips":["Validate .kjb XML files after any external manipulation","Regenerate corrupted entries from Spoon rather than patching XML","Pin consistent Pentaho versions across environments","Store jobs in version control to recover clean copies"],"tags":["kettle","xml","parsing","job-entry"],"backgroundTag":"json-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"}