joplin-notes/_resources/parsing_with_new.dart
2026-11-04 00:33:23 +05:30

46 lines
1.2 KiB
Dart

import 'package:html/parser.dart' as html_parser; // To parse the HTML
import 'package:html/dom.dart'; // For working with the DOM structure
void main() {
// Example HTML content with some nested tags
String htmlContent = '''
<div>
Line 1<br>
<div>Line 2<br>Line 3<br><span>Nested Line 4</span></div>
Line 5
</div>
''';
// Parse the HTML content
Document document = html_parser.parse(htmlContent);
// Find the desired element
Element? divElement = document.querySelector('div');
if (divElement != null) {
// Extract and preserve newlines recursively
String preservedText = preserveTextWithNewlines(divElement);
print(preservedText);
}
}
String preserveTextWithNewlines(Element element) {
final buffer = StringBuffer();
for (var node in element.nodes) {
if (node is Text) {
// Append text content
buffer.write(node.text);
} else if (node is Element) {
if (node.localName == 'br') {
// Add newline for <br> tags
buffer.write('\n');
} else {
// Recursively process child elements
buffer.write(preserveTextWithNewlines(node));
}
}
}
return buffer.toString();
}