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
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
tree | Any | Yes | — | htmlTree object or cell array of htmlTree objects. |
selector | StringScalar | Yes | — | CSS selector. |
Returns
| Name | Type | Description |
|---|---|---|
subtrees | Any | Matching htmlTree subtrees. |
Errors
| Identifier | When | Message |
|---|---|---|
RunMat:html:InvalidInput | Inputs are not a supported htmlTree or extractHTMLText form. | HTML Text Analytics helper received invalid input |
How findElement works
treemust be a scalar RunMathtmlTreeobject or a cell array ofhtmlTreeobjects.selectormust 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
Find Links
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.
Related Strings functions
Text Analytics
addDependencyDetails · addEntityDetails · addLemmaDetails · addPartOfSpeechDetails · addSentenceDetails · addTypeDetails · bagOfNgrams · bagOfWords · cosineSimilarity · doc2sequence · encode · extractFileText · extractHTMLText · fastTextWordEmbedding · getAttribute · htmlTree · ind2word · isVocabularyWord · normalizeWords · readWordEmbedding · removeLongWords · removeShortWords · removeStopWords · removeWords · stopWords · tokenDetails · tokenizedDocument · trainWordEmbedding · vaderSentimentScores · vec2word · word2ind · word2vec · wordEncoding · writeWordEmbedding
Transform
append · deblank · erase · eraseBetween · erasePunctuation · eraseURLs · extractAfter · extractBefore · extractBetween · insertAfter · insertBefore · join · lower · pad · replace · replaceBetween · reverse · split · splitlines · strcat · strip · strjoin · strjust · strrep · strsplit · strtrim · upper
Core
blanks · char · compose · convertCharsToStrings · convertContainedStringsToChars · convertStringsToChars · genvarname · int2str · isletter · isspace · isStringScalar · isstrprop · mat2str · native2unicode · newline · num2str · sprintf · sscanf · str2double · str2num · strcmp · strcmpi · string · string.empty · strings · strlength · strncmp · strncmpi · strtok · unicode2native
Search
contains · endsWith · matches · startsWith · strfind
Pattern
digitsPattern · lettersPattern · pattern · regexpPattern · textBoundary · wildcardPattern
Open-source implementation
Unlike proprietary runtimes, every RunMat function is open-source. Read exactly how findElement is executed, line by line, in Rust.
- View the source for findElement in Rust on GitHub
- Learn how the RunMat runtime works
- Found a bug? Open an issue with a minimal reproduction.
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.