DataSchema.XML Class
yui3/src/dataschema/js/dataschema-xml.js:8
Parent Module: dataschema
Provides a DataSchema implementation which can be used to work with XML data.
See the apply
method for usage.
Index
Methods
- _getLocationValue static
- _getXPathResult static
- _parseField static
- _parseMeta static
- _parseResult static
- _parseResults static
- apply static
- parse
Methods
_getLocationValue
-
field
-
context
Get an XPath-specified value for a given field from an XML node or document.
Parameters:
-
field
String | ObjectField definition.
-
context
ObjectXML node or document to search within.
Returns:
Data value or null.
_getXPathResult
-
locator
-
context
-
xmldoc
Fetches the XPath-specified result for a given location in an XML node or document.
Parameters:
-
locator
StringThe XPath location.
-
context
ObjectXML node or document to search within.
-
xmldoc
ObjectXML document to resolve namespace.
Returns:
Data collection or null.
_parseField
-
field
-
result
-
context
Schema-parsed result field.
Parameters:
-
field
String | ObjectRequired. Field definition.
-
result
ObjectRequired. Schema parsed data object.
-
context
ObjectRequired. XML node or document to search within.
_parseMeta
-
xmldoc_in
-
data_out
Parses results data according to schema
Parameters:
-
xmldoc_in
ObjectXML document parse.
-
data_out
ObjectIn-progress schema-parsed data to update.
Returns:
Schema-parsed data.
_parseResult
-
fields
-
context
Schema-parsed result to add to results list.
Parameters:
-
fields
ArrayRequired. A collection of field definition.
-
context
ObjectRequired. XML node or document to search within.
Returns:
Schema-parsed data.
_parseResults
-
schema
-
context
-
data_out
Schema-parsed list of results from full data
Parameters:
-
schema
ObjectSchema to parse against.
-
context
ObjectXML node or document to parse.
-
data_out
ObjectIn-progress schema-parsed data to update.
Returns:
Schema-parsed data.
apply
-
schema
-
data
Applies a schema to an XML data tree, returning a normalized object with
results in the results
property. Additional information can be parsed out
of the XML for inclusion in the meta
property of the response object. If
an error is encountered during processing, an error
property will be
added.
Field data in the nodes captured by the XPath in schema.resultListLocator is extracted with the field identifiers described in schema.resultFields. Field identifiers are objects with the following properties:
key
: <strong>(required)</strong> The desired property name to use store the retrieved value in the result object. Iflocator
is not specified,key
is also used as the XPath locator (String)locator
: The XPath locator to the node or attribute within each result node found by schema.resultListLocator containing the desired field data (String)parser
: A function or the name of a function onY.Parsers
used to convert the input value into a normalized type. Parser functions are passed the value as input and are expected to return a value.schema
: Used to retrieve nested field data into an array for assignment as the result field value. This object follows the same conventions as schema.
If no value parsing or nested parsing is needed, you can use XPath locators (strings) instead of field identifiers (objects) -- see example below.
response.results
will contain an array of objects with key:value pairs.
The keys are the field identifier key
s, and the values are the data
values extracted from the nodes or attributes found by the field locator
(or key
fallback).
To extract additional information from the XML, include an array of
XPath locators in schema.metaFields. The collected values will be
stored in response.meta
with the XPath locator as keys.
Parameters:
-
schema
ObjectSchema to apply. Supported configuration properties are:
-
[resultListLocator]
String optionalXPath locator for the XML nodes that contain the data to flatten into
response.results
-
[resultFields]
Array optionalField identifiers to locate/assign values in the response records. See above for details.
-
[metaFields]
Array optionalXPath locators to extract extra non-record related information from the XML data
-
-
data
XMLDocumentXML data to parse
Returns:
An Object with properties results
and meta
Example:
var schema = {
resultListLocator: '//produce/item',
resultFields: [
{
locator: 'name',
key: 'name'
},
{
locator: 'color',
key: 'color',
parser: function (val) { return val.toUpperCase(); }
}
]
};
// Assumes data like
// <inventory>
// <produce>
// <item><name>Banana</name><color>yellow</color></item>
// <item><name>Orange</name><color>orange</color></item>
// <item><name>Eggplant</name><color>purple</color></item>
// </produce>
// </inventory>
var response = Y.DataSchema.JSON.apply(schema, data);
// response.results[0] is { name: "Banana", color: "YELLOW" }
parse
-
value
-
field
<p>Applies field parser, if defined</p>
Parameters:
-
value
Object<p><p><p><p>Original value.</p></p></p></p>
-
field
Object<p><p><p><p>Field.</p></p></p></p>
Returns:
<p><p><p><p>Type-converted value.</p></p></p></p>