Document Structure and Traversal
Once you have selected an Element from a Document, you sometimes need to find structurally related portions (parent, siblings, children) of the document. A Document can be conceptualized as a tree of Node objects, as illustrated in Figure 15-1. The Node type defines properties for traversing such a tree, which we’ll cover in Documents As Trees of Nodes. Another API allows documents to be traversed as trees of Element objects. Documents As Trees of Elements covers this newer (and often easier-to-use) API.
Documents As Trees of Nodes
The Document object, its Element objects, and the Text objects that represent runs of text in the document are all Node objects. Node defines the following important properties:
The Node that is the parent of this one, or
nullfor nodes like the Document object that have no parent.
A read-only array-like object (a NodeList) that is a live representation of a Node’s child nodes.
The first and last child nodes of a node, or
nullif the node has no children.
The next and previous sibling node of a node. Two nodes with the same parent are siblings. Their order reflects the order in which they appear in the document. These properties connect nodes in a doubly linked list.
The kind of node this is. Document nodes have the value 9. Element nodes have the value 1. Text nodes have the value 3. Comments nodes are 8 and DocumentFragment nodes are 11.