pentaho/pentaho-kettle · error · KettleException
GetXMLData.Log.NoField (localized message)
Error message
GetXMLData.Log.NoField (localized message)
What it means
Thrown by ReadNextString when the step's XML source field name (meta.getXMLField()) is empty. GetXMLData in 'field' input mode reads XML content from a field of the incoming row; if no field name was configured, the step cannot know where the XML comes from and aborts after logging the localized 'NoField' message.
Solutions
- Open the GetXMLData step dialog and set the 'XML field' (field containing the XML string) to an existing input field name.
- If using a variable/parameter for the field name, define it in the transformation settings or the job that calls it.
- Switch the step to file/URL-based input if the XML actually comes from files rather than a row field.
Example fix
// before
meta.setXMLField( "" ); // field name never set
// after
if ( Utils.isEmpty( meta.getXMLField() ) ) {
throw new KettleException( "XML field name must be configured before running" );
}
meta.setXMLField( "xml_content" ); Defensive patterns
Strategy: validation
Validate before calling
if (meta.getXMLField() == null || meta.getXMLField().trim().isEmpty()) {
throw new IllegalStateException("GetXMLData: XML field name must be set");
} Try / catch
try {
step.init(meta, data);
} catch (KettleException e) {
if (e.getMessage().contains("NoField")) {
logError("Configure the 'XML field' in GetXMLData settings");
} else { throw e; }
} Prevention
- Always pick the XML field from the dropdown rather than typing it.
- If the field name comes from a variable, define a default value in transformation settings.
- Review step configuration after copy/pasting between transformations.
- Validate transformation metadata with a metadata QA check before scheduling.
When it happens
Trigger: The step is configured to read XML from a field ('Get XML from field' / XML source defined in a field) but the 'XML field' name box was left blank; a saved transformation lost the field setting via parameter substitution yielding an empty value.
Common situations: Copying a step between transformations and forgetting to re-enter the field name; a variable like ${XML_FIELD} not defined at runtime so it resolves to empty; user filled the file tab instead of the field tab while field-based input was selected.
Understand the failure class
Background: "missing required argument" and "the following required arguments were not provided": what required-argument errors mean and how to fix them — this error's family across 20 libraries.
Related errors
- GetXMLData.Log.RequiredNotAccessibleFilesMissing (localized…
- AccessInput.Exception.CouldnotFindField
- AccessInput.Log.NoField
- AddSequence.Exception.NoSpecifiedMethod
- At this time we don't support the use of multiple cluster…
AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13).
Data as JSON: /api/errors/476cb63e603d4211.
Report an issue: GitHub.
Appendix: source
Thrown at plugins/xml/core/src/main/java/org/pentaho/di/trans/steps/getxmldata/GetXMLData.java:368
// Get total previous fields
data.totalpreviousfields = data.inputRowMeta.size();
// Create convert meta-data objects that will contain Date & Number formatters
data.convertRowMeta = new RowMeta();
for ( ValueMetaInterface valueMeta : data.convertRowMeta.getValueMetaList() ) {
data.convertRowMeta
.addValueMeta( ValueMetaFactory.cloneValueMeta( valueMeta, ValueMetaInterface.TYPE_STRING ) );
}
// For String to <type> conversions, we allocate a conversion meta data row as well...
//
data.convertRowMeta = data.outputRowMeta.cloneToType( ValueMetaInterface.TYPE_STRING );
// Check is XML field is provided
if ( Utils.isEmpty( meta.getXMLField() ) ) {
logError( BaseMessages.getString( PKG, "GetXMLData.Log.NoField" ) );
throw new KettleException( BaseMessages.getString( PKG, "GetXMLData.Log.NoField" ) );
}
// cache the position of the field
if ( data.indexOfXmlField < 0 ) {
data.indexOfXmlField = getInputRowMeta().indexOfValue( meta.getXMLField() );
if ( data.indexOfXmlField < 0 ) {
// The field is unreachable !
logError( BaseMessages.getString( PKG, "GetXMLData.Log.ErrorFindingField", meta.getXMLField() ) );
throw new KettleException( BaseMessages.getString( PKG, "GetXMLData.Exception.CouldnotFindField", meta
.getXMLField() ) );
}
}
}
if ( meta.isInFields() ) {
// get XML field value
String Fieldvalue = getInputRowMeta().getString( data.readrow, data.indexOfXmlField );
View on GitHub (pinned to f3058517a1)