Hello @egorbaykovnn,
Here are the steps for the parsing of information, in C++ format/documentation.
1. Make sure the GUI type used on the DEF_LINE_TEMPLATE and WORKBENCH_DEFLINE_PARMS are "encoded".
An example using the Oracle Spatial format, which can be found in the "oracle_spatialDefSource.fmi" file is:
For the DEF_LINE_TEMPLATE section:
puts {DEF_LINE_TEMPLATE {FME_GEN_GROUP_NAME} \\ }; \\
puts { oracle_geom_column \\"\\" \\ }; \\
puts { oracle_sql_encoded \\"\\" \\ }; \\
puts { oracle_where_clause_encoded \\"\\" \\ }; \\
For the WORKBENCH_DEFLINE_PARMS section:
"GUI OPTIONAL WHOLE_LINE TEXT_EDIT_SQL_CFG oracle_sql_encoded MODE,SQL SELECT Statement" "" \\
"GUI OPTIONAL WHOLE_LINE TEXT_EDIT_SQL_CFG oracle_where_clause_encoded MODE,WHERE WHERE Clause" "" \\
2. For the actual parsing of the DEF lines, break by spaces as you stated.
This would look like:
keyword_def
feature type name
key
value
(repeat)
attr name
attr value
(repeat)
Once the value has been pulled out, you will need to decode it.
The documentation for decoding can be found in the following folder located in your FME install location.
pluginbuilder/cpp/apidoc/classIFMEString.html
The function would be one of the following:
virtual void decodeFromFMEParsableText ()=0
virtual void decodeUtf8FromFMEParsableText ()=0