{"record":{"id":"476cb63e603d4211","repo":"pentaho/pentaho-kettle","slug":"getxmldata-log-nofield-localized-message","errorCode":null,"errorMessage":"GetXMLData.Log.NoField (localized message)","messagePattern":"GetXMLData\\.Log\\.NoField \\(localized message\\)","errorType":"exception","errorClass":"KettleException","httpStatus":null,"severity":"error","filePath":"plugins/xml/core/src/main/java/org/pentaho/di/trans/steps/getxmldata/GetXMLData.java","lineNumber":368,"sourceCode":"\n        // Get total previous fields\n        data.totalpreviousfields = data.inputRowMeta.size();\n\n        // Create convert meta-data objects that will contain Date & Number formatters\n        data.convertRowMeta = new RowMeta();\n        for ( ValueMetaInterface valueMeta : data.convertRowMeta.getValueMetaList() ) {\n          data.convertRowMeta\n              .addValueMeta( ValueMetaFactory.cloneValueMeta( valueMeta, ValueMetaInterface.TYPE_STRING ) );\n        }\n\n        // For String to <type> conversions, we allocate a conversion meta data row as well...\n        //\n        data.convertRowMeta = data.outputRowMeta.cloneToType( ValueMetaInterface.TYPE_STRING );\n\n        // Check is XML field is provided\n        if ( Utils.isEmpty( meta.getXMLField() ) ) {\n          logError( BaseMessages.getString( PKG, \"GetXMLData.Log.NoField\" ) );\n          throw new KettleException( BaseMessages.getString( PKG, \"GetXMLData.Log.NoField\" ) );\n        }\n\n        // cache the position of the field\n        if ( data.indexOfXmlField < 0 ) {\n          data.indexOfXmlField = getInputRowMeta().indexOfValue( meta.getXMLField() );\n          if ( data.indexOfXmlField < 0 ) {\n            // The field is unreachable !\n            logError( BaseMessages.getString( PKG, \"GetXMLData.Log.ErrorFindingField\", meta.getXMLField() ) );\n            throw new KettleException( BaseMessages.getString( PKG, \"GetXMLData.Exception.CouldnotFindField\", meta\n                .getXMLField() ) );\n          }\n        }\n      }\n\n      if ( meta.isInFields() ) {\n        // get XML field value\n        String Fieldvalue = getInputRowMeta().getString( data.readrow, data.indexOfXmlField );\n","sourceCodeStart":350,"sourceCodeEnd":386,"githubUrl":"https://github.com/pentaho/pentaho-kettle/blob/f3058517a153da500bf4551f46d79b91bf8ec552/plugins/xml/core/src/main/java/org/pentaho/di/trans/steps/getxmldata/GetXMLData.java#L350-L386","documentation":"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.","triggerScenarios":"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.","commonSituations":"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.","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."],"exampleFix":"// before\nmeta.setXMLField( \"\" ); // field name never set\n// after\nif ( Utils.isEmpty( meta.getXMLField() ) ) {\n  throw new KettleException( \"XML field name must be configured before running\" );\n}\nmeta.setXMLField( \"xml_content\" );","handlingStrategy":"validation","validationCode":"if (meta.getXMLField() == null || meta.getXMLField().trim().isEmpty()) {\n  throw new IllegalStateException(\"GetXMLData: XML field name must be set\");\n}","typeGuard":null,"tryCatchPattern":"try {\n  step.init(meta, data);\n} catch (KettleException e) {\n  if (e.getMessage().contains(\"NoField\")) {\n    logError(\"Configure the 'XML field' in GetXMLData settings\");\n  } else { throw e; }\n}","preventionTips":["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."],"tags":["configuration","kettle","xml-input","missing-setting"],"backgroundTag":"missing-required-argument","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"}