Extension:External Data/Parsing data

The parser functions #get_web_data, #get_soap_data, #get_file_data, #get_program_data and #get_inline_data all retrieve data that is expected to take a certain structured form. The following parameters can all be used in any of these calls to help parse these. Some can be used only for specific formats, while others are valid across all formats.

Cross-format parameters
If auto is set, the extension will attempt (susually successfully) to determine the actual data format, based on file or URL extension, some other arguments to the parser function and the parsed content itself.
 * format - specifies the format of the data being retrieved: it should be one of either 'CSV', 'CSV with header', 'GFF', 'JSON', 'JSON with JSONpath', 'YAML', 'YAML with JSONpath', 'XML', 'XML with XPath', 'HTML', 'HTML with XPath', 'ini' or 'text'. CSV, JSON, YAML, and XML are standard data formats; GFF, or the Generic Feature Format, is a format for genomic data. The difference between 'CSV' and 'CSV with header' is that 'CSV' is simply a set of lines with values; while in ' ', the first line is a " ", holding a comma-separated list of the name of each column. 'text' indicates that the contents of the file should be retrieved as-is. 'ini' format refers to key-value pairs (see below).


 * start line, end line, header lines, footer lines - use these to cut out a fragment of data. Line number are one-based, negative values (-1 meaning last) are possible as well as percentages (0% to 100%). Use header lines and footer lines to carve out a valid CSV, JSON or XML. Note that if any of these is set, additional newlines will be injected into XML or JSON to guarantee that required tag/variable blocks begin and end at new lines, which will influence the required start line and end line settings. The external variables  and   store the beginning and end of the main fragment (without header or footer),   contain the number of lines returned an   — total number of lines in the file.

Format-specific parameters

 * delimiter -
 * in CSV format, specifies the delimiter between values in the data set. The default value is " ". To specify a tab delimiter, use " ".
 * in INI format, specifies the delimiter between key and value; by default,.
 * If auto, detect, autodetect or delimiter is not set at all, the extension will automatically choose one (trying,  , tabulation and   for CSV and   and   for INI. The delimiter that gives the evenest and widest table will be chosen.


 * or  determines whether the CSV file has a header line. If it has, it will not be parsed as data, but the column headers will be used, instead of numbers, as variable names. If auto, detect or autodetect is set, the extension will try to determine, whether the first line is likely to contain column headers, by anaysing its contents and comparing it with the second line and taking into account the external variable names (all numeric or special or not) from the  data parameter.
 * regex - specifies a PHP regular expression that should be used to get specific strings; used with the "text" format. Example: For sample text, the regex   returns "Heading" to the external variable.
 * use xpath - an optional parameter that can be used with the "XML" or "HTML" formats, to indicate that "data" mappings should be done using XPath notation. This is especially useful if the same tag or attribute name is used more than once in the file, and you only want to get a specific instance of it. We won't get into the details of XPath notation here, but you can see a demonstration of "use xpath" here.
 * default xmlns prefix - an optional parameter that can be used with "use xpath", which sets the default namespace prefix to be used.
 * use jsonpath - an optional parameter that can be used with the "JSON" and "YAML" formats, to indicate that "data" mappings should be done using JSONPath notation. JSONPath is less well-known than XPath, but documentation for it does exist: see here for one guide to JSONPath syntax, and here for an online evaluator of JSONPath syntax.
 * json offset - an optional parameter that represents the number of characters to ignore at the beginning of the data set being parsed. It is used with JSON values, in case the JSON being accessed has some kind of security string at the beginning.
 * allow trailing commas - if this is set, JSON files with commas before  or   will be parsed even though JSON specification does not allow trailing commas. This setting is useful when start line, end line, header lines and footer lines are set.
 * comment delimiter - for the "ini" format, contains the character or string used at the beginning of comment lines (by default,  and  ).
 * invalid as comments - for the "ini" format, determines whether a line, not parsable as a configuration setting or comment, should be treated as a comment (some INI formats may have section headings like.

Using CSS-style selectors
With the "HTML" format, you can either use XPath (see above) or CSS-style selectors. For CSS-style selection, you do not need to specify a special parameter: it is the default approach used when "use xpath" is not specified. CSS selectors are a notation that uses tag names, classes and IDs to locate one or more elements in an HTML page; it is also the syntax used in jQuery. See here for one reference for CSS-style selectors.

INI text example
The "ini" format refers to INI files; here is a short example of such a file: