xpath_for_html
An XPath selector for locating HTML elements
English | 中文文档
Easy to use
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
Basic syntax
| 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 | ||
tagn |
nth-child(n) | Select by index | |
tag@key="value" |
tagkey="value" |
Filter properties | |
| node() | .children | child | |
| text() | .text | text | √ |
| @attr | Selects attributes | √ |
For more syntax, please refer toXPath
Extended syntax
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" |
Libraries
- xpath_for_html
- Support for doing something awesome.