Reputation: 1875
In dart,
I want to parse a string "<!DOCTYPE HTMT><html><head></head><body>....</body></html>
" to a DOM so that I can manipulate element in the generated DOM. I know in JQuery, there is $.parseHTML to deal with it. But I can not find anything similar in dart.
Thank you.
(I have tried html2lib, but the output Document cannot use query(".classname")
to select.)
Upvotes: 9
Views: 9982
Reputation: 30320
Try html. It's 100% pure Dart, so you should be set.
You could also consider an XML parser for Dart like xml depending on the nature of your HTML.
Upvotes: 5
Reputation: 1210
Check out this article in dart documentation
You can use this for dart
import 'dart:html';
and carryout parsing like this
querySelector('#theid').text = 'Wake up, sleepy head!';
}
In case of flutter, you have to add the "html" package in the pubspec.yaml below the cupertino_icons dependency like this for example
html: ^0.13.3+3
and then the dart file you have to import it like
import 'package:html/parser.dart' as parser;
and then carry out parsing as before but remember to add the alias name before each method!
Upvotes: 0
Reputation: 303
You can create an element by parsing HTML text:
new Element.html("YOUR HTML STRING HERE");
EDIT
You may need to pass a NodeValidator to get the entire text rendered like:
NodeValidator nodeValidator = new NodeValidatorBuilder()
..allowTextElements();
// ..allowHtml5()
// ..allowElement('Button', attributes: ['ng-disabled']);
new Element.html("YOUR HTML STRING HERE", validator: nodeValidator);
If you run the application you get log messages like "element/attribute xxx removed from ..." if some of the text was not accepted by the NodeValidator.
Upvotes: 6