An XPath selector for locating HTML elements
English | 中文文档
You have three ways to do XPath queries
final html = '''<html><div></div></html>''';
final htmlDom = parse(htmlString).documentElement!;
// Create by html string
final result1 = XPath.html(html).query('//div');
// Or through the dom of the HTML package
final result2 = XPath(htmlDom).query('//div');
// Or query directly through element
final result3 = htmlDom.queryXPath('//div');
// Get all nodes of query results
print(result1.elements);
// Get the first node of query results
print(result1.element);
// Get all properties of query results
print(result1.attrs);
// Get the first valid property of the query result (not null)
print(result1.attr);
More examples can be referred toexample or test
Expression | Css or html | Description | Attr |
---|---|---|---|
// | Selects nodes in the document from the current node that match the selection no matter where they are | ||
/ | Selects from the root node | ||
.. | Selects the parent of the current node | ||
tag[n] | nth-child(n) | Select by index | |
tag[@key="value"] | tag[key="value"] | Filter properties | |
node() | .children | child | |
text() | .text | text | √ |
@attr | Selects attributes | √ |
For more syntax, please refer toXPath
In the attribute selector, the parser extends the following attribute selector in CSS style
Expression | Css | Description |
---|---|---|
[@attr='value'] | [attr="value"] | Selects all elements with attr="value" |
[@attr~='value'] | [attr~="value"] | Selects all elements attribute containing the word "value" |
[@attr^='value'] | [attr^="value"] | Selects all elements whose attr attribute value begins with "value" |
[@attr$='value'] | [attr$="value"] | Selects all elements whose attr attribute value ends with "value" |
[@attr*='value'] | [attr*="value"] | Selects all elements whose attr attribute value contains the substring "value" |