loadExternalDtd method

Future<void> loadExternalDtd()

Attempts to load all external DTD references contained within any nested XmlDoctypes and XmlEntitys, load the pages they reference, and parse the DTD elements contained within.

In a valid XML document XmlDoctypes and XmlEntitys shouldn't be contained within an element, this method only exists for good measure.

Implementation

Future<void> loadExternalDtd() async {
  if (children == null || children!.isEmpty) return;

  for (var i = 0; i < children!.length; i++) {
    final child = children![i];

    if (child is XmlConditional) {
      await child.loadExternalDtd();
    } else if (child is XmlDoctype) {
      final externalDtd = await child.loadExternalDtd();
      if (externalDtd != null) children![i] = externalDtd;
    } else if (child is XmlElement) {
      await child.loadExternalDtd();
    } else if (child is XmlEntity) {
      final externalEntities = await child.loadExternalEntities();
      if (externalEntities != null) children![i] = externalEntities;
    }
  }

  return;
}