mirror of
https://bitbucket.org/chromiumembedded/cef
synced 2025-06-05 21:39:12 +02:00
Expose XML parsing support (issue #28).
git-svn-id: https://chromiumembedded.googlecode.com/svn/trunk@119 5089003a-bbd8-11dd-ad1f-f1f9622dbc98
This commit is contained in:
@@ -1004,6 +1004,159 @@ typedef struct _cef_download_handler_t
|
||||
} cef_download_handler_t;
|
||||
|
||||
|
||||
// Structure that supports the reading of XML data via the libxml streaming API.
|
||||
typedef struct _cef_xml_reader_t
|
||||
{
|
||||
// Base structure.
|
||||
cef_base_t base;
|
||||
|
||||
// Moves the cursor to the next element node in the document. This function
|
||||
// must be called at least once to set the current cursor position. Returns
|
||||
// true (1) if the cursor position was set successfully.
|
||||
int (CEF_CALLBACK *move_to_next_element)(struct _cef_xml_reader_t* self);
|
||||
|
||||
// Close the document. This must be called directly to ensure that cleanup
|
||||
// occurs on the correct thread.
|
||||
int (CEF_CALLBACK *close)(struct _cef_xml_reader_t* self);
|
||||
|
||||
// Returns true (1) if an error has been reported by the XML parser.
|
||||
int (CEF_CALLBACK *has_error)(struct _cef_xml_reader_t* self);
|
||||
|
||||
// Returns the error string.
|
||||
// The resulting string must be freed by calling cef_string_free().
|
||||
cef_string_t (CEF_CALLBACK *get_error)(struct _cef_xml_reader_t* self);
|
||||
|
||||
|
||||
// The below functions retrieve data for the node at the current cursor
|
||||
// position.
|
||||
|
||||
// Returns the node type.
|
||||
enum cef_xml_node_type_t (CEF_CALLBACK *get_type)(
|
||||
struct _cef_xml_reader_t* self);
|
||||
|
||||
// Returns the node depth. Depth starts at 0 for the root node.
|
||||
int (CEF_CALLBACK *get_depth)(struct _cef_xml_reader_t* self);
|
||||
|
||||
// Returns the local name. See http://www.w3.org/TR/REC-xml-names/#NT-
|
||||
// LocalPart for additional details.
|
||||
// The resulting string must be freed by calling cef_string_free().
|
||||
cef_string_t (CEF_CALLBACK *get_local_name)(struct _cef_xml_reader_t* self);
|
||||
|
||||
// Returns the namespace prefix. See http://www.w3.org/TR/REC-xml-names/ for
|
||||
// additional details.
|
||||
// The resulting string must be freed by calling cef_string_free().
|
||||
cef_string_t (CEF_CALLBACK *get_prefix)(struct _cef_xml_reader_t* self);
|
||||
|
||||
// Returns the qualified name, equal to (Prefix:)LocalName. See
|
||||
// http://www.w3.org/TR/REC-xml-names/#ns-qualnames for additional details.
|
||||
// The resulting string must be freed by calling cef_string_free().
|
||||
cef_string_t (CEF_CALLBACK *get_qualified_name)(
|
||||
struct _cef_xml_reader_t* self);
|
||||
|
||||
// Returns the URI defining the namespace associated with the node. See
|
||||
// http://www.w3.org/TR/REC-xml-names/ for additional details.
|
||||
// The resulting string must be freed by calling cef_string_free().
|
||||
cef_string_t (CEF_CALLBACK *get_namespace_uri)(
|
||||
struct _cef_xml_reader_t* self);
|
||||
|
||||
// Returns the base URI of the node. See http://www.w3.org/TR/xmlbase/ for
|
||||
// additional details.
|
||||
// The resulting string must be freed by calling cef_string_free().
|
||||
cef_string_t (CEF_CALLBACK *get_base_uri)(struct _cef_xml_reader_t* self);
|
||||
|
||||
// Returns the xml:lang scope within which the node resides. See
|
||||
// http://www.w3.org/TR/REC-xml/#sec-lang-tag for additional details.
|
||||
// The resulting string must be freed by calling cef_string_free().
|
||||
cef_string_t (CEF_CALLBACK *get_xml_lang)(struct _cef_xml_reader_t* self);
|
||||
|
||||
// Returns true (1) if the node represents an NULL element. <a/> is considered
|
||||
// NULL but <a></a> is not.
|
||||
int (CEF_CALLBACK *is_empty_element)(struct _cef_xml_reader_t* self);
|
||||
|
||||
// Returns true (1) if the node has a text value.
|
||||
int (CEF_CALLBACK *has_value)(struct _cef_xml_reader_t* self);
|
||||
|
||||
// Returns the text value.
|
||||
// The resulting string must be freed by calling cef_string_free().
|
||||
cef_string_t (CEF_CALLBACK *get_value)(struct _cef_xml_reader_t* self);
|
||||
|
||||
// Returns true (1) if the node has attributes.
|
||||
int (CEF_CALLBACK *has_attributes)(struct _cef_xml_reader_t* self);
|
||||
|
||||
// Returns the number of attributes.
|
||||
size_t (CEF_CALLBACK *get_attribute_count)(struct _cef_xml_reader_t* self);
|
||||
|
||||
// Returns the value of the attribute at the specified 0-based index.
|
||||
// The resulting string must be freed by calling cef_string_free().
|
||||
cef_string_t (CEF_CALLBACK *get_attribute_byindex)(
|
||||
struct _cef_xml_reader_t* self, int index);
|
||||
|
||||
// Returns the value of the attribute with the specified qualified name.
|
||||
// The resulting string must be freed by calling cef_string_free().
|
||||
cef_string_t (CEF_CALLBACK *get_attribute_byqname)(
|
||||
struct _cef_xml_reader_t* self, const wchar_t* qualifiedName);
|
||||
|
||||
// Returns the value of the attribute with the specified local name and
|
||||
// namespace URI.
|
||||
// The resulting string must be freed by calling cef_string_free().
|
||||
cef_string_t (CEF_CALLBACK *get_attribute_bylname)(
|
||||
struct _cef_xml_reader_t* self, const wchar_t* localName,
|
||||
const wchar_t* namespaceURI);
|
||||
|
||||
// Returns an XML representation of the current node's children.
|
||||
// The resulting string must be freed by calling cef_string_free().
|
||||
cef_string_t (CEF_CALLBACK *get_inner_xml)(struct _cef_xml_reader_t* self);
|
||||
|
||||
// Returns an XML representation of the current node including its children.
|
||||
// The resulting string must be freed by calling cef_string_free().
|
||||
cef_string_t (CEF_CALLBACK *get_outer_xml)(struct _cef_xml_reader_t* self);
|
||||
|
||||
// Returns the line number for the current node.
|
||||
int (CEF_CALLBACK *get_line_number)(struct _cef_xml_reader_t* self);
|
||||
|
||||
|
||||
// Attribute nodes are not traversed by default. The below functions can be
|
||||
// used to move the cursor to an attribute node. move_to_carrying_element()
|
||||
// can be called afterwards to return the cursor to the carrying element. The
|
||||
// depth of an attribute node will be 1 + the depth of the carrying element.
|
||||
|
||||
// Moves the cursor to the attribute at the specified 0-based index. Returns
|
||||
// true (1) if the cursor position was set successfully.
|
||||
int (CEF_CALLBACK *move_to_attribute_byindex)(struct _cef_xml_reader_t* self,
|
||||
int index);
|
||||
|
||||
// Moves the cursor to the attribute with the specified qualified name.
|
||||
// Returns true (1) if the cursor position was set successfully.
|
||||
int (CEF_CALLBACK *move_to_attribute_byqname)(struct _cef_xml_reader_t* self,
|
||||
const wchar_t* qualifiedName);
|
||||
|
||||
// Moves the cursor to the attribute with the specified local name and
|
||||
// namespace URI. Returns true (1) if the cursor position was set
|
||||
// successfully.
|
||||
int (CEF_CALLBACK *move_to_attribute_bylname)(struct _cef_xml_reader_t* self,
|
||||
const wchar_t* localName, const wchar_t* namespaceURI);
|
||||
|
||||
// Moves the cursor to the first attribute in the current element. Returns
|
||||
// true (1) if the cursor position was set successfully.
|
||||
int (CEF_CALLBACK *move_to_first_attribute)(struct _cef_xml_reader_t* self);
|
||||
|
||||
// Moves the cursor to the next attribute in the current element. Returns true
|
||||
// (1) if the cursor position was set successfully.
|
||||
int (CEF_CALLBACK *move_to_next_attribute)(struct _cef_xml_reader_t* self);
|
||||
|
||||
// Moves the cursor back to the carrying element. Returns true (1) if the
|
||||
// cursor position was set successfully.
|
||||
int (CEF_CALLBACK *move_to_carrying_element)(struct _cef_xml_reader_t* self);
|
||||
|
||||
} cef_xml_reader_t;
|
||||
|
||||
|
||||
// Create a new cef_xml_reader_t object. The returned object's functions can
|
||||
// only be called from the thread that created the object.
|
||||
CEF_EXPORT cef_xml_reader_t* cef_xml_reader_create(cef_stream_reader_t* stream,
|
||||
enum cef_xml_encoding_type_t encodingType, const wchar_t* URI);
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user