pentaho/pentaho-kettle · error · KettleXMLException
RegexEvalMeta.Exception.UnableToLoadStepInfoFromXML
Error message
RegexEvalMeta.Exception.UnableToLoadStepInfoFromXML
What it means
RegexEvalMeta.loadXML calls readData to parse the step's <fields> XML nodes; if any XML parsing/access throws, it rethrows as a KettleXMLException with message 'RegexEvalMeta.Exception.UnableToLoadStepInfoFromXML'. It means the step definition in the .ktr file could not be deserialized.
Solutions
- Open the .ktr in a text editor and check the RegexEval step's <fields> XML block for missing or malformed tags.
- Correct any invalid field_type value so ValueMetaFactory can resolve it.
- Recreate the step in Spoon and re-enter the regex fields.
- Upgrade to a matching Pentaho version if the file came from a newer release.
Example fix
<!-- before: invalid type code --> <field_type>strng</field_type> <!-- after: valid type code --> <field_type>String</field_type>
Defensive patterns
Strategy: try-catch
When it happens
Trigger: loadXML -> readData encounters missing/corrupt XML tags (field_name, field_code, field_type, length, precision, trim_type) or ValueMetaFactory.getIdForValueMeta receives an unknown type code.
Common situations: Hand-edited .ktr files; .ktr produced by a newer Pentaho version with new attributes opened in an older version; truncated/corrupted transformation files.
Related errors
- GetTableNamesMeta.Exception.UnableToReadStepInfo
- GPBulkLoaderMeta.Exception.UnableToReadStepInfoFromXML
- GPLoadMeta.Exception.UnableToReadStepInfoFromXML
- JobEntryMailValidator.Meta.UnableToLoadFromXML
- LDAPInputMeta.UnableToLoadFromXML
AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13).
Data as JSON: /api/errors/bfa4293da3943246.
Report an issue: GitHub.
Appendix: source
Thrown at engine/src/main/java/org/pentaho/di/trans/steps/regexeval/RegexEvalMeta.java:378
fieldName[i] = XMLHandler.getTagValue( fnode, "name" );
final String stype = XMLHandler.getTagValue( fnode, "type" );
fieldFormat[i] = XMLHandler.getTagValue( fnode, "format" );
fieldGroup[i] = XMLHandler.getTagValue( fnode, "group" );
fieldDecimal[i] = XMLHandler.getTagValue( fnode, "decimal" );
fieldCurrency[i] = XMLHandler.getTagValue( fnode, "currency" );
final String slen = XMLHandler.getTagValue( fnode, "length" );
final String sprc = XMLHandler.getTagValue( fnode, "precision" );
fieldNullIf[i] = XMLHandler.getTagValue( fnode, "nullif" );
fieldIfNull[i] = XMLHandler.getTagValue( fnode, "ifnull" );
final String trim = XMLHandler.getTagValue( fnode, "trimtype" );
fieldType[i] = ValueMetaFactory.getIdForValueMeta( stype );
fieldLength[i] = Const.toInt( slen, -1 );
fieldPrecision[i] = Const.toInt( sprc, -1 );
fieldTrimType[i] = ValueMetaString.getTrimTypeByCode( trim );
}
} catch ( Exception e ) {
throw new KettleXMLException( BaseMessages.getString(
PKG, "RegexEvalMeta.Exception.UnableToLoadStepInfoFromXML" ), e );
}
}
public void setDefault() {
script = "";
matcher = "";
resultfieldname = "result";
usevar = false;
allowcapturegroups = false;
replacefields = true;
canoneq = false;
caseinsensitive = false;
comment = false;
dotall = false;
multiline = false;
unicode = false;
unix = false;View on GitHub (pinned to f3058517a1)