{"record":{"id":"4f74535870a99b7f","repo":"pentaho/pentaho-kettle","slug":"xsdvalidatormeta-exception-unabletoloadstepinfofromxml","errorCode":null,"errorMessage":"XsdValidatorMeta.Exception.UnableToLoadStepInfoFromXML","messagePattern":"XsdValidatorMeta\\.Exception\\.UnableToLoadStepInfoFromXML","errorType":"exception","errorClass":"KettleXMLException","httpStatus":null,"severity":"error","filePath":"plugins/xml/core/src/main/java/org/pentaho/di/trans/steps/xsdvalidator/XsdValidatorMeta.java","lineNumber":220,"sourceCode":"    try {\n\n      xsdFilename = XMLHandler.getTagValue( stepnode, \"xdsfilename\" );\n      xmlStream = XMLHandler.getTagValue( stepnode, \"xmlstream\" );\n      resultFieldname = XMLHandler.getTagValue( stepnode, \"resultfieldname\" );\n      xsdDefinedField = XMLHandler.getTagValue( stepnode, \"xsddefinedfield\" );\n      xsdSource = XMLHandler.getTagValue( stepnode, \"xsdsource\" );\n\n      addValidationMessage = \"Y\".equalsIgnoreCase( XMLHandler.getTagValue( stepnode, \"addvalidationmsg\" ) );\n\n      validationMessageField = XMLHandler.getTagValue( stepnode, \"validationmsgfield\" );\n      ifXmlValid = XMLHandler.getTagValue( stepnode, \"ifxmlvalid\" );\n      ifXmlInvalid = XMLHandler.getTagValue( stepnode, \"ifxmlunvalid\" );\n      outputStringField = \"Y\".equalsIgnoreCase( XMLHandler.getTagValue( stepnode, \"outputstringfield\" ) );\n      xmlSourceFile = \"Y\".equalsIgnoreCase( XMLHandler.getTagValue( stepnode, \"xmlsourcefile\" ) );\n      allowExternalEntities = \"Y\".equalsIgnoreCase( XMLHandler.getTagValue( stepnode, \"allowExternalEntities\" ) );\n\n    } catch ( Exception e ) {\n      throw new KettleXMLException( BaseMessages.getString( PKG,\n          \"XsdValidatorMeta.Exception.UnableToLoadStepInfoFromXML\" ), e );\n    }\n  }\n\n  public void setDefault() {\n    xsdFilename = \"\";\n    xmlStream = \"\";\n    resultFieldname = \"result\";\n    addValidationMessage = false;\n    validationMessageField = \"ValidationMsgField\";\n    ifXmlValid = \"\";\n    ifXmlInvalid = \"\";\n    outputStringField = false;\n    xmlSourceFile = false;\n    xsdDefinedField = \"\";\n    xsdSource = SPECIFY_FILENAME;\n    allowExternalEntities = Boolean.valueOf( System.getProperties().getProperty( Const.ALLOW_EXTERNAL_ENTITIES_FOR_XSD_VALIDATION, Const.ALLOW_EXTERNAL_ENTITIES_FOR_XSD_VALIDATION_DEFAULT ) );\n  }","sourceCodeStart":202,"sourceCodeEnd":238,"githubUrl":"https://github.com/pentaho/pentaho-kettle/blob/f3058517a153da500bf4551f46d79b91bf8ec552/plugins/xml/core/src/main/java/org/pentaho/di/trans/steps/xsdvalidator/XsdValidatorMeta.java#L202-L238","documentation":"Thrown by XsdValidatorMeta.readData when parsing the step's XML configuration node fails unexpectedly. It is a KettleXMLException wrapper whose cause holds the real parsing exception (e.g. XMLHandler failures), raised while loadXML deserializes the XSD Validator step from a .ktr file. It indicates the step metadata could not be reconstructed from XML.","triggerScenarios":"loadXML(stepnode) is called during transformation deserialization and any XMLHandler.getTagValue call in readData throws (malformed DOM, incompatible XML structure, or an unexpected exception inside the block).","commonSituations":"Corrupted or hand-edited .ktr files; opening a transformation saved by an incompatible Pentaho/Kettle version; XML node structure changed between plugin versions so expected tags or types no longer parse.","solutions":["Inspect the wrapped cause exception (getCause()) to find the actual parse failure.","Open the .ktr in a text editor and verify the <fields>/step XML block for the XSD Validator step is well-formed and has expected tags like ifxmlunvalid, outputstringfield.","Recreate the step in Spoon and re-save the transformation.","Upgrade the XML plugin / Pentaho version to match the file's origin."],"exampleFix":"// before: hand-edited step XML missing boolean tags\n<step><name>XSD Validator</name></step>\n// after: regenerate the step XML via Spoon save\n<step><name>XSD Validator</name><ifxmlunvalid>N</ifxmlunvalid><outputstringfield>Y</outputstringfield></step>","handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":"try { transMeta.loadXML(file, ...) } catch (KettleXMLException e) { log.error(\"Step XML load failed: \" + e.getCause(), e); throw e; }","preventionTips":["Never hand-edit .ktr XML; edit via Spoon","Keep Pentaho/Kettle and plugin versions consistent between authoring and execution environments","Keep .ktr files in version control to diff/detect corruption"],"tags":["xml","deserialization","kettle","step-metadata"],"backgroundTag":"xml-deserialization-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"}