decodeXmlEntities function
Decodes the XML entities uiautomator writes: & < >
" ' and numeric references like / 😀.
Unknown entities are left as they are.
Implementation
String decodeXmlEntities(String s) {
if (!s.contains('&')) return s;
return s.replaceAllMapped(RegExp(r'&(#x[0-9a-fA-F]+|#\d+|amp|lt|gt|quot|apos);'), (m) {
final e = m.group(1)!;
switch (e) {
case 'amp':
return '&';
case 'lt':
return '<';
case 'gt':
return '>';
case 'quot':
return '"';
case 'apos':
return "'";
}
final code = e.startsWith('#x') ? int.tryParse(e.substring(2), radix: 16) : int.tryParse(e.substring(1));
if (code == null || code > 0x10FFFF) return m.group(0)!;
return String.fromCharCode(code);
});
}