findElement — Find matching elements in an htmlTree object.

findElement(tree, selector) searches a RunMat htmlTree object and returns matching subtrees as a column cell array of scalar htmlTree objects.

Syntax

subtrees = findElement(tree, selector)

Inputs

NameTypeRequiredDefaultDescription
treeAnyYeshtmlTree object or cell array of htmlTree objects.
selectorStringScalarYesCSS selector.

Returns

NameTypeDescription
subtreesAnyMatching htmlTree subtrees.

Errors

IdentifierWhenMessage
RunMat:html:InvalidInputInputs are not a supported htmlTree or extractHTMLText form.HTML Text Analytics helper received invalid input

How findElement works

  • tree must be a scalar RunMat htmlTree object or a cell array of htmlTree objects.
  • selector must be a string scalar or character vector.
  • Supported selectors include element tags, *, .class, #id, [attr], [attr=value], [attr~=value], [attr|=value], [attr^=value], [attr$=value], [attr*=value], descendant combinators, child combinators (>), adjacent-sibling combinators (+), general-sibling combinators (~), comma-separated groups, :empty, :first-child, :first-of-type, and :not(...) for these supported pseudo-classes.
  • Attribute names are matched case-insensitively through the parser's lowercase attribute map. Attribute values, ids, and classes use CSS-style exact, whitespace-list, dash-prefix, prefix, suffix, or substring string matching according to the selector operator.
  • Sibling matching follows element siblings and ignores intervening whitespace text nodes.
  • The result is a column cell array because RunMat does not yet have a first-class MATLAB object-array representation for htmlTree.
  • Unsupported CSS pseudo-classes and selector forms raise an explicit error instead of silently returning partial results.
  • Full CSS3 selector parity remains tracked by the broader Text Analytics compatibility issue.

GPU memory and residency

findElement traverses host-resident HTML metadata and has no provider kernel.

Examples

tree = htmlTree("<div><a class='nav' href='/home'>Home</a><a class='nav'>Docs</a></div>");
links = findElement(tree, "a.nav");
text = extractHTMLText(links)

Expected output:

text = ["Home"; "Docs"]

Use Combinators

tree = htmlTree("<section><h1>Title</h1><p>Lead</p></section>");
lead = findElement(tree, "h1 + p")

Expected output:

`lead` is a one-element cell array containing the matching `P` subtree.

Use CSS Attribute Operators

tree = htmlTree("<div><a href='manual.pdf'>Manual</a><a href='guide.html'>Guide</a></div>");
pdfs = findElement(tree, "a[href$='.pdf']")

Expected output:

`pdfs` contains the link whose `href` ends with `.pdf`.

Use Positional Pseudo-Classes

tree = htmlTree("<section><p>Intro</p><a>First</a><a>Second</a></section>");
firstLink = findElement(tree, "a:first-of-type")

Expected output:

`firstLink` contains the first `A` element under the section.

Using findElement with coding agents

Open a RunMat example with live inputs, then ask the agent to explain how findElement changes the result.

Run a small findElement example, explain the result, then change one input and compare the output.

FAQ

Does findElement return a MATLAB object array?

No. RunMat currently returns a column cell array of scalar htmlTree objects because generic object-array identity semantics are still tracked separately.

Does RunMat support every CSS selector accepted by MATLAB?

No. Common tag, id, class, attribute operator, group, descendant, child, sibling, :empty, :first-child, :first-of-type, and simple :not(...) forms are supported. Full CSS3 parity remains tracked in the Text Analytics umbrella issue.

Does findElement execute on the GPU?

No. It traverses host HTML metadata and has no runmat-accelerate provider path.

Open-source implementation

Unlike proprietary runtimes, every RunMat function is open-source. Read exactly how findElement is executed, line by line, in Rust.

About RunMat

RunMat is an open-source runtime that executes MATLAB-syntax code blazing on any GPU. It is licensed under the Apache 2.0 license.

  • RunMat automatically optimizes your math for GPU execution on Apple, Nvidia, and AMD hardware. No code changes needed. Simulations that took hours now take minutes.
  • Start running code in seconds. RunMat runs in the browser, on the desktop, or from the CLI. No license server, no IT ticket.

Getting started · Benchmarks · Pricing

Download RunMat

Download RunMat for full performance, or use RunMat in your browser for zero setup.