J'essaie d'y parvenir depuis un certain temps, j'ai une chaîne qui contient beaucoup de balises HTML qui est sous une forme codée comme & lt; et & gt; (sans les espaces) entre la chaîne. Quelqu'un peut-il m'aider à supprimer ces balises pour obtenir une chaîne simple?
Enfin, j'ai atteint cet objectif en utilisant le package html intégré de Dart
Voici comment je l'ai fait
import ‘package:html/parser.Dart’;
//here goes the function
String _parseHtmlString(String htmlString) {
var document = parse(htmlString);
String parsedString = parse(document.body.text).documentElement.text;
return parsedString;
}
Je ne sais pas s'il existe un moyen plus propre de le faire, mais celui-ci a fonctionné pour moi.
Vous pouvez simplement utiliser RegExp sans 3rd Lib
String removeAllHtmlTags(String htmlText) {
RegExp exp = RegExp(
r"<[^>]*>",
multiLine: true,
caseSensitive: true
);
return htmlText.replaceAll(exp, '');
}
use this class:
import 'package:html/parser.Dart';
class HtmlTags {
static void removeTag({ htmlString, callback }){
var document = parse(htmlString);
String parsedString = parse(document.body.text).documentElement.text;
callback(parsedString);
}
}
example:
HtmlTags.removeTag(
htmlString: '<h1>Hello Bug</h1>',
callback: (string) => print(string),
);
output: Hello Bug
3 étapes
tout d'abord, ajoutez ceci à votre fichier "pubspec.yaml"
dépendances: flutter_html: ^ 0.8.2
deuxièmement, importez dans votre fichier Dart
importer 'package: flutter_html_view/flutter_html_view.Dart';
3ème, utilisez simplement
HtmlView (données: "Vos données Html"),
En utilisant simplement
import ‘package:html/parser.Dart’;
obtiendra un problème, pour les chaînes qui incluent <br>
et <p>
Mots clés. Les informations de paragraphe sont manquantes. Peut d'abord remplacer <br>
à <p>
, puis obtenez Liste:
import ‘package:html/parser.Dart’ as dom;
htmlString = '<p> first ... line.<br>second.....line.<p>';
List<String> cleanStrings = new List<String>();
List<dom.Element> ps = parse(htmlString.replaceAll('<br>', '</p><p>'))).querySelectorAll('p');
if (ps.isNotEmpty) ps.forEach((f) {
(f.text != '') cleanStrings.add(f.text);
});