blob: 309ed7c615ec9bf6bfa54b9ee766863387f269f2 [file] [log] [blame]
import 'package:html/dom.dart';
import 'package:html/dom_parsing.dart';
import 'package:html/parser.dart';
void main(List<String> args) {
var document = parse('''
<body>
<h2>Header 1</h2>
<p>Text.</p>
<h2>Header 2</h2>
More text.
<br/>
</body>''');
// outerHtml output
print('outer html:');
print(document.outerHtml);
print('');
// visitor output
print('html visitor:');
_Visitor().visit(document);
}
// Note: this example visitor doesn't handle things like printing attributes and
// such.
class _Visitor extends TreeVisitor {
String indent = '';
@override
void visitText(Text node) {
if (node.data.trim().isNotEmpty) {
print('$indent${node.data.trim()}');
}
}
@override
void visitElement(Element node) {
if (isVoidElement(node.localName)) {
print('$indent<${node.localName}/>');
} else {
print('$indent<${node.localName}>');
indent += ' ';
visitChildren(node);
indent = indent.substring(0, indent.length - 2);
print('$indent</${node.localName}>');
}
}
@override
void visitChildren(Node node) {
for (var child in node.nodes) {
visit(child);
}
}
}