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: aCefStreamReaderproviding the XML bytes.encodingType:XML_ENCODING_NONE/UTF8/UTF16LE/UTF16BE/ISO_8859_1(typed viacef_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
// 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();