getText static method

String? getText(
  1. XmlNode? node, {
  2. bool innerXmlAsText = false,
})

Given an XmlNode this will return the raw XmlNodeType.TEXT String

Implementation

static String? getText(XmlNode? node, {bool innerXmlAsText = false}) {
  // node is text or cdata
  if (node?.nodeType == XmlNodeType.TEXT ||
      node?.nodeType == XmlNodeType.CDATA) return node?.value;

  // return node inner xml as text
  if (innerXmlAsText) {
    bool isText = (node?.children.firstWhereOrNull((child) =>
            (child is XmlCDATA || child is XmlText || child is XmlComment)
                ? false
                : true) ==
        null);
    var text = isText ? node?.innerText.trim() : node?.innerXml.trim();
    //text = text?.replaceAll('\r', '').replaceAll('\t', '').replaceAll('\n', '').trim();
    return text;
  }

  // traverse child nodes
  if ((node?.children.isNotEmpty == true)) {
    String? text;
    for (XmlNode n in node!.children) {
      String? s;
      if ((n.nodeType == XmlNodeType.TEXT) ||
          (n.nodeType == XmlNodeType.CDATA)) s = n.value;
      if (s != null) text = (text ?? '') + s.trim();
    }
    return text;
  }
  return null;
}