#html-parser #dom #testing #automated-testing #html5ever #web #structure

markup5ever_rcdom

Basic, unsupported DOM structure for use by tests in html5ever/xml5ever

5 releases (breaking)

0.5.0-unofficial Sep 20, 2024
0.4.0-unofficial Aug 10, 2024
0.3.0 Mar 23, 2024
0.2.0 Aug 18, 2022
0.1.0 Dec 19, 2019

#201 in Web programming

Download history 17793/week @ 2024-08-16 26077/week @ 2024-08-23 20397/week @ 2024-08-30 26365/week @ 2024-09-06 16265/week @ 2024-09-13 26502/week @ 2024-09-20 31372/week @ 2024-09-27 15344/week @ 2024-10-04 22456/week @ 2024-10-11 22139/week @ 2024-10-18 21981/week @ 2024-10-25 17935/week @ 2024-11-01 29344/week @ 2024-11-08 50692/week @ 2024-11-15 20987/week @ 2024-11-22 32305/week @ 2024-11-29

135,737 downloads per month
Used in 240 crates (44 directly)

MIT/Apache

740KB
12K SLoC

markup5ever_rcdom

This crate is built for the express purpose of writing automated tests for the html5ever and xml5ever crates. It is not intended to be a production-quality DOM implementation, and has not been fuzzed or tested against arbitrary, malicious, or nontrivial inputs. No maintenance or support for any such issues will be provided. If you use this DOM implementation in a production, user-facing system, you do so at your own risk.


lib.rs:

A simple reference-counted DOM.

This is sufficient as a static parse tree, but don't build a web browser using it. :)

A DOM is a tree structure with ordered children that can be represented in an XML-like format. For example, the following graph

div
 +- "text node"
 +- span

in HTML would be serialized as

<div>text node<span></span></div>

See the document object model article on wikipedia for more information.

This implementation stores the information associated with each node once, and then hands out refs to children. The nodes themselves are reference-counted to avoid copying - you can create a new ref and then a node will outlive the document. Nodes own their children, but only have weak references to their parents.

Dependencies

~0.7–5.5MB
~22K SLoC