PySide6.QtCore.QXmlStreamEntityResolver

class QXmlStreamEntityResolver

The QXmlStreamEntityResolver class provides an entity resolver for a QXmlStreamReader . More

Synopsis

Methods

Virtual methods

Note

This documentation may contain snippets that were automatically translated from C++ to Python. We always welcome contributions to the snippet translation. If you see an issue with the translation, you can also let us know by creating a ticket on https:/bugreports.qt.io/projects/PYSIDE

Detailed Description

Use to inform QXmlStreamReader how to expand entities not declared in the internal-set of the DTD .

You must take care to avoid resolving entities in cycles, because QXmlStreamReader only detects and rejects cycles in entities defined in the DTD , not in entities expanded from an implementation of the QXmlStreamEntityResolver interface.

This is by design: QXmlStreamReader puts the work on the implementation of a concrete QXmlStreamEntityResolver . For static mappings, like XML Entity Definitions for Characters , this is trivially guaranteed, so running some tracking in the background would just slow things down for everyone.

Things get interesting when you read entity definitions from external input, including untrusted sources. In this case, your implementation must ensure the expansions it uses as input are cycle-free. This is a simple graph operation that can be implemented in linear time and space and can be performed up front at load time, so it doesn’t affect resolveUndeclaredEntity() performance.

At the moment, entities resolved by this class do not count against entityExpansionLimit() . This may change in future versions of Qt.

For the time being, you need to enforce some upper expansion limit yourself, if you read entity definitions from external input. After cycle detection, longest-path calculation is a simple graph operation that can be implemented in linear time and space and can be performed up front at load time, so it, too, doesn’t affect resolveUndeclaredEntity() performance.

__init__()
resolveEntity(publicId, systemId)
Parameters:
  • publicId – str

  • systemId – str

Return type:

str

resolveUndeclaredEntity(name)
Parameters:

name – str

Return type:

str

Reimplement this function to resolve the undeclared entity name and return its replacement text. If the entity is unknown to the entity resolver, return a null string : QString(). This will raise an error in QXmlStreamreader. An empty, but non-null string is considered a valid expansion of the entity, and will not cause an error.

The default implementation always returns QString().