Skip to content

CefXmlReader

Header: cef_xml_reader.h
Category: System Utilities

Overview

Tasks, threads, parsers, streams, cookies, URL requests, scheme registration, and constant tables.

CefXmlReader

Source File: include/cef_xml_reader.h

Process / Thread Context: Any process — but methods may only be called from the thread that created the object (creator-thread affinity).

Purpose: Streaming XML reader implemented on top of libxml2's pull API. The reader walks a cursor forward through the document one node at a time and exposes per-node metadata (type, depth, names, attributes, etc.).

Methods

static CefRefPtr<CefXmlReader> Create(CefRefPtr<CefStreamReader> stream, EncodingType encodingType, const CefString& URI)

Parameters:

  • stream: a CefStreamReader providing the XML bytes.
  • encodingType: XML_ENCODING_NONE/UTF8/UTF16LE/UTF16BE/ISO_8859_1 (typed via cef_xml_encoding_type_t).
  • URI: base URI for resolving relative references / diagnostics.

Return Value: New reader; methods only callable from creator thread.

Threading Constraint: Any thread (creation); creator thread only thereafter.

virtual bool MoveToNextNode()

Parameters:

  • (none)

Return Value: true if cursor advanced. Must be called at least once before any getter.

Threading Constraint: Creator thread.

virtual bool Close()

Parameters:

  • (none)

Return Value: true on success.

Usage Instruction: Call directly so cleanup happens on the correct thread.

Threading Constraint: Creator thread.

virtual bool HasError()

Return Value: true if parser reported an error. Creator thread.

Threading Constraint: Threading constraint not specified in source.

virtual CefString GetError()

Return Value: error string. Creator thread.

Threading Constraint: Threading constraint not specified in source.

virtual NodeType GetType()

Return Value: cef_xml_node_type_t (default retval XML_NODE_UNSUPPORTED). Creator thread.

Threading Constraint: Threading constraint not specified in source.

virtual int GetDepth()

Return Value: depth, 0 = root. Creator thread.

Threading Constraint: Threading constraint not specified in source.

virtual CefString GetLocalName()

Return Value: local part of qualified name (per W3C namespaces). Creator thread.

Threading Constraint: Threading constraint not specified in source.

virtual CefString GetPrefix()

Return Value: namespace prefix. Creator thread.

Threading Constraint: Threading constraint not specified in source.

virtual CefString GetQualifiedName()

Return Value: (Prefix:)LocalName. Creator thread.

Threading Constraint: Threading constraint not specified in source.

virtual CefString GetNamespaceURI()

Return Value: namespace URI. Creator thread.

Threading Constraint: Threading constraint not specified in source.

virtual CefString GetBaseURI()

Return Value: base URI (xml:base). Creator thread.

Threading Constraint: Threading constraint not specified in source.

virtual CefString GetXmlLang()

Return Value: xml:lang scope. Creator thread.

Threading Constraint: Threading constraint not specified in source.

virtual bool IsEmptyElement()

Return Value: true for <a/>, false for <a></a>. Creator thread.

Threading Constraint: Threading constraint not specified in source.

virtual bool HasValue()

Return Value: node has a text value. Creator thread.

Threading Constraint: Threading constraint not specified in source.

virtual CefString GetValue()

Return Value: text value. Creator thread.

Threading Constraint: Threading constraint not specified in source.

virtual bool HasAttributes()

Return Value: element has any attributes. Creator thread.

Threading Constraint: Threading constraint not specified in source.

virtual size_t GetAttributeCount()

Return Value: number of attributes. Creator thread.

Threading Constraint: Threading constraint not specified in source.

virtual CefString GetAttribute(int index)

Return Value: value of attribute at 0-based index. Creator thread.

Threading Constraint: Threading constraint not specified in source.

virtual CefString GetAttribute(const CefString& qualifiedName)

Return Value: attribute by qualified name. Creator thread.

Threading Constraint: Threading constraint not specified in source.

virtual CefString GetAttribute(const CefString& localName, const CefString& namespaceURI)

Return Value: attribute by local name + namespace. Creator thread.

Threading Constraint: Threading constraint not specified in source.

virtual CefString GetInnerXml()

Return Value: XML of children of current node. Creator thread.

Threading Constraint: Threading constraint not specified in source.

virtual CefString GetOuterXml()

Return Value: XML of current node + children. Creator thread.

Threading Constraint: Threading constraint not specified in source.

virtual int GetLineNumber()

Return Value: line number of current node. Creator thread.

Threading Constraint: Threading constraint not specified in source.

virtual bool MoveToAttribute(int index)

Return Value: cursor → attribute at index. Creator thread.

Threading Constraint: Threading constraint not specified in source.

virtual bool MoveToAttribute(const CefString& qualifiedName)

Return Value: by qualified name. Creator thread.

Threading Constraint: Threading constraint not specified in source.

virtual bool MoveToAttribute(const CefString& localName, const CefString& namespaceURI)

Return Value: by local name + namespace. Creator thread.

Threading Constraint: Threading constraint not specified in source.

virtual bool MoveToFirstAttribute()

Return Value: cursor → first attribute. Creator thread.

Threading Constraint: Threading constraint not specified in source.

virtual bool MoveToNextAttribute()

Return Value: cursor → next attribute. Creator thread.

Threading Constraint: Threading constraint not specified in source.

virtual bool MoveToCarryingElement()

Return Value: return from attribute back to the element that owns it. Creator thread.

Threading Constraint: Threading constraint not specified in source.

Usage Example

cpp
// Parse an OPML-style XML stream on a background CefThread and log the outline.
CefRefPtr<CefStreamReader> reader = CefStreamReader::CreateForFile("outline.xml");
CefRefPtr<CefXmlReader> xml = CefXmlReader::Create(reader, XML_ENCODING_UTF8, "outline.xml");
while (xml->MoveToNextNode()) {
  if (xml->GetType() == XML_NODE_ELEMENT && xml->GetLocalName() == "outline") {
    CefString title = xml->GetAttribute("title");
    int depth = xml->GetDepth();
    LOG(INFO) << std::string(depth * 2, ' ') << title.ToString();
  }
  if (xml->HasError()) {
    LOG(ERROR) << "XML parse error: " << xml->GetError().ToString();
    break;
  }
}
xml->Close();

Derived from the CEF C++ headers — © Marshall A. Greenblatt, Google Inc. & contributors (BSD-style license). Not an official CEF project.