pentaho/pentaho-kettle · error · KettleXMLException
XsdValidatorMeta.Exception.UnableToLoadStepInfoFromXML
Error message
XsdValidatorMeta.Exception.UnableToLoadStepInfoFromXML
What it means
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.
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.
Example fix
// before: hand-edited step XML missing boolean tags <step><name>XSD Validator</name></step> // after: regenerate the step XML via Spoon save <step><name>XSD Validator</name><ifxmlunvalid>N</ifxmlunvalid><outputstringfield>Y</outputstringfield></step>
Defensive patterns
Strategy: try-catch
Try / catch
try { transMeta.loadXML(file, ...) } catch (KettleXMLException e) { log.error("Step XML load failed: " + e.getCause(), e); throw e; } Prevention
- 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
When it happens
Trigger: 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).
Common situations: 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.
Related errors
- CubeOutputMeta.Exception.UnableToLoadStepInfo
- DelayMeta.Exception.UnableToReadStepInfo
- PGPDecryptStreamMeta.Exception.UnableToReadStepInfo
- RulesMeta.Error.LoadFromXML
- RulesMeta.Error.LoadFromXML
AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13).
Data as JSON: /api/errors/4f74535870a99b7f.
Report an issue: GitHub.
Appendix: source
Thrown at plugins/xml/core/src/main/java/org/pentaho/di/trans/steps/xsdvalidator/XsdValidatorMeta.java:220
try {
xsdFilename = XMLHandler.getTagValue( stepnode, "xdsfilename" );
xmlStream = XMLHandler.getTagValue( stepnode, "xmlstream" );
resultFieldname = XMLHandler.getTagValue( stepnode, "resultfieldname" );
xsdDefinedField = XMLHandler.getTagValue( stepnode, "xsddefinedfield" );
xsdSource = XMLHandler.getTagValue( stepnode, "xsdsource" );
addValidationMessage = "Y".equalsIgnoreCase( XMLHandler.getTagValue( stepnode, "addvalidationmsg" ) );
validationMessageField = XMLHandler.getTagValue( stepnode, "validationmsgfield" );
ifXmlValid = XMLHandler.getTagValue( stepnode, "ifxmlvalid" );
ifXmlInvalid = XMLHandler.getTagValue( stepnode, "ifxmlunvalid" );
outputStringField = "Y".equalsIgnoreCase( XMLHandler.getTagValue( stepnode, "outputstringfield" ) );
xmlSourceFile = "Y".equalsIgnoreCase( XMLHandler.getTagValue( stepnode, "xmlsourcefile" ) );
allowExternalEntities = "Y".equalsIgnoreCase( XMLHandler.getTagValue( stepnode, "allowExternalEntities" ) );
} catch ( Exception e ) {
throw new KettleXMLException( BaseMessages.getString( PKG,
"XsdValidatorMeta.Exception.UnableToLoadStepInfoFromXML" ), e );
}
}
public void setDefault() {
xsdFilename = "";
xmlStream = "";
resultFieldname = "result";
addValidationMessage = false;
validationMessageField = "ValidationMsgField";
ifXmlValid = "";
ifXmlInvalid = "";
outputStringField = false;
xmlSourceFile = false;
xsdDefinedField = "";
xsdSource = SPECIFY_FILENAME;
allowExternalEntities = Boolean.valueOf( System.getProperties().getProperty( Const.ALLOW_EXTERNAL_ENTITIES_FOR_XSD_VALIDATION, Const.ALLOW_EXTERNAL_ENTITIES_FOR_XSD_VALIDATION_DEFAULT ) );
}View on GitHub (pinned to f3058517a1)