{"record":{"id":"791b864142f2fa11","repo":"pentaho/pentaho-kettle","slug":"unable-to-load-step-info-from-xml-rssoutputmeta","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/rss/impl/src/main/java/org/pentaho/di/trans/steps/rssoutput/RssOutputMeta.java","lineNumber":692,"sourceCode":"      allocateitem( nritemfields );\n\n      for ( int i = 0; i < nritemfields; i++ ) {\n        Node knode = XMLHandler.getSubNodeByNr( keys, \"item_custom_fields\", i );\n        ItemCustomTags[i] = XMLHandler.getTagValue( knode, \"tag\" );\n        ItemCustomFields[i] = XMLHandler.getTagValue( knode, \"field\" );\n      }\n      // NameSpaces\n      Node keysNameSpaces = XMLHandler.getSubNode( stepnode, \"namespaces\" );\n      int nrnamespaces = XMLHandler.countNodes( keysNameSpaces, \"namespace\" );\n      allocatenamespace( nrnamespaces );\n      for ( int i = 0; i < nrnamespaces; i++ ) {\n        Node knode = XMLHandler.getSubNodeByNr( keysNameSpaces, \"namespace\", i );\n        NameSpacesTitle[i] = XMLHandler.getTagValue( knode, \"namespace_tag\" );\n        NameSpaces[i] = XMLHandler.getTagValue( knode, \"namespace_value\" );\n      }\n\n    } catch ( Exception e ) {\n      throw new KettleXMLException( \"Unable to load step info from XML\", e );\n    }\n  }\n\n  public void setDefault() {\n    displayitem = true;\n    customrss = false;\n    channeltitle = null;\n    channeldescription = null;\n    channellink = null;\n    channelpubdate = null;\n    channelcopyright = null;\n    channelimagetitle = null;\n    channelimagelink = null;\n    channelimageurl = null;\n    channelimagedescription = null;\n    channellanguage = null;\n    channelauthor = null;\n    createparentfolder = false;","sourceCodeStart":674,"sourceCodeEnd":710,"githubUrl":"https://github.com/pentaho/pentaho-kettle/blob/f3058517a153da500bf4551f46d79b91bf8ec552/plugins/rss/impl/src/main/java/org/pentaho/di/trans/steps/rssoutput/RssOutputMeta.java#L674-L710","documentation":"RssOutputMeta.loadXML() throws KettleXMLException 'Unable to load step info from XML' when any exception occurs while deserializing the step's configuration from the .ktr file — e.g. malformed XML nodes, missing expected subnodes, or numeric conversion failures while reading attributes like displayitem, customrss, or the namespace arrays.","triggerScenarios":"loadXML reads the step node via XMLHandler and any getSubNode/getTagValue/parseInt call throws — typically a corrupt or hand-edited .ktr file, or a file saved by a different plugin version whose XML shape differs from what this loader expects.","commonSituations":"Manually editing the .ktr file and breaking the <rss_output> step XML; merging transformations with a diff tool producing invalid XML; opening a transformation saved in a newer Pentaho version with an older plugin that lacks the namespace/keyfields nodes; truncated file from a failed checkout or transfer.","solutions":["Validate the .ktr file is well-formed XML and inspect the <step type=\"RssOutput\"> block for malformed or missing tags.","Restore the transformation from version control or a backup copy.","Recreate the RSS Output step in Spoon and re-enter its settings, replacing the corrupt step XML.","Ensure the plugin version matches the Pentaho version that saved the file (version drift in XML schema)."],"exampleFix":"// before (hand-edited ktr, broken node)\n<custom_rss></custom>\n// after\n<custom_rss>N</custom_rss>","handlingStrategy":"try-catch","validationCode":"// Validate the .ktr is well-formed before loading:\nDocumentBuilderFactory f = DocumentBuilderFactory.newInstance();\nf.parse(new File(\"transformation.ktr\")); // throws if XML is malformed","typeGuard":null,"tryCatchPattern":"try {\n    transMeta = new TransMeta(ktrPath);\n} catch (KettleXMLException e) {\n    if (e.getMessage().contains(\"Unable to load step info from XML\")) {\n        log.error(\"Corrupt or incompatible RssOutput step XML; restore from backup or recreate the step\", e);\n    }\n}","preventionTips":["Never hand-edit .ktr files; edit via Spoon only","Store transformations in version control and restore on merge conflicts","Keep the RSS plugin and Pentaho versions aligned across environments","Validate .ktr XML structure in CI before deploying"],"tags":["pentaho-kettle","xml-parse","ktr","rss-output"],"backgroundTag":"json-unmarshal-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"}