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

  1. Open the .ktr in a text editor and check the RegexEval step's <fields> XML block for missing or malformed tags.
  2. Correct any invalid field_type value so ValueMetaFactory can resolve it.
  3. Recreate the step in Spoon and re-enter the regex fields.
  4. 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


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)