xpath_selector 2.2.1 xpath_selector: ^2.2.1 copied to clipboard
XPath package for HTML and XML, most XPath syntaxs are supported.
xpath_selector #
An XPath selector for locating Html and Xml elements
English | 中文文档
Easy to use #
You have three ways to do XPath queries
final html = '''<html><div></div></html>''';
final htmlDom = parse(htmlString).documentElement!;
final xml = '''<root><child></child></root>''';
final xmlRoot = XmlDocument
.parse()
.rootElement;
// Create by html string
final result1 = XPath.html(html).query('//div');
final result2 = XPath.xml(html).query('//child');
// Or through the dom of the HTML or Xml package
final result3 = XPath.htmlElement(htmlDom).query('//div');
final result4 = XPath.xmlElement(xmlRoot).query('//child');
// Or query directly through element
final result5 = htmlDom.queryXPath('//div');
final result6 = xmlRoot.queryXPath('//child');
// Get all nodes of query results
print(result1.nodes);
// Get the first node of query results
print(result1.node);
// 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 to Xml | Html
Custom parser #
This package uses html and xml as the default parsing package
If you want to use another parsing package (such as universal_html),
Please refer to HtmlNodeTree
create your own model.
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" |
Breaking changes #
1.x => 2.0 #
- Remove class
XPathElement
, which merge toXPathNode
- In
XPathResult
,elements
=>nodes
,elements
=>element