Recently I was studying a DRP project. The database driver string and URL string are written into the configuration file to increase program flexibility. You need to use dom4j and XPath technology to read the data.
The following describes common XPath knowledge.
XPath uses path expressions to select nodes or node sets in XML documents. Nodes are selected by following the path or step (steps.
XML instance document
We will use this XML document in the following example.
<?xml version="1.0" encoding="ISO-8859-1"?><bookstore><book> <title lang="eng">Harry Potter</title> <price>29.99</price></book><book> <title lang="eng">Learning XML</title> <price>39.95</price></book></bookstore>
Select Node
XPath uses path expressions to select nodes in XML documents. Nodes are selected by following the path or step.
The most useful path expressions are listed below:
Expression |
Description |
Nodename |
Select all child nodes of the node. |
/ |
Select from the root node. |
// |
Select the nodes in the document from the current node that matches the selected node, regardless of their location. |
. |
Select the current node. |
.. |
Select the parent node of the current node. |
@ |
Select attributes. |
Instance
In the following table, we have listed some path expressions and expression results:
Path expression |
Result |
Bookstore |
Select All subnodes of the bookstore element. |
/Bookstore |
Select the root element bookstore. Note: If the path starts with a forward slash (/), the path always represents the absolute path to an element! |
Bookstore/book |
Select all the book elements that belong to the sub-elements of bookstore. |
// Book |
Select All book child elements regardless of their location in the document. |
Bookstore // book |
Select all the book elements belonging to the descendant of the bookstore element, regardless of where they are located under the bookstore. |
// @ Lang |
Select all properties named Lang. |
Predicates)
It is used to find a specific node or a node that contains a specified value.
The predicates are embedded in square brackets.
Instance
In the following table, we list some path expressions with predicates and the results of the expressions:
Path expression |
Result |
/Bookstore/book [1] |
Select the first book element that belongs to the bookstore sub-element. |
/Bookstore/book [last ()] |
Select the last book element that belongs to the bookstore sub-element. |
/Bookstore/book [last ()-1] |
Select the penultimate book element that belongs to the bookstore sub-element. |
/Bookstore/book [position () <3] |
Select the first two bookstore sub-elements. |
// Title [@ Lang] |
Select all the title elements with the lang attribute. |
// Title [@ lang = 'eng'] |
Select All title elements and these elements have the lang attribute whose value is Eng. |
/Bookstore/book [price> 35.00] |
Select all the book elements of the bookstore element, and the value of the price element must be greater than 35.00. |
/Bookstore/book [price> 35.00]/Title |
Select all the title elements of the book element in the bookstore element, and the value of the price element must be greater than 35.00. |
Select unknown Node
The XPath wildcard can be used to select unknown XML elements.
Wildcard |
Description |
* |
Match any element node. |
@* |
Match any attribute node. |
Node () |
Match any type of nodes. |
Instance
In the following table, we list some path expressions and the results of these expressions:
Path expression |
Result |
/Bookstore /* |
Select all child elements of the bookstore element. |
//* |
Select all elements in the document. |
// Title [@ *] |
Select All title elements with attributes. |
Select several paths
You can select several paths by using the "|" operator in the path expression.
Instance
In the following table, we list some path expressions and the results of these expressions:
Path expression |
Result |
// Book/Title | // book/price |
Select all the title and price elements of the book element. |
// Title | // price |
Select all the title and price elements in the document. |
/Bookstore/book/Title | // price |
Select all the title elements of the book element that belongs to the bookstore element and all the price elements in the document. |
After reading this article, write some simple XPath strings.