XPath

XPath substring example

In this example, we will try to see how we can use the sub-string method in the XPath for our use-cases.

The sub-string method is used to search for the sub-string in the beginning or the end or anywhere in the XPath node. It can also be used to extract the part of the sub-string from the string by specifying the beginning index and end index.

 
 
 
 
 

The XPath provides following methods for this :

 

  • substring-before(String target, String tosearch)
  • substring-after(String target, String tosearch)
  • substring(String target, int startingindex, int length)

We will look at all the methods in brief and see how to use each of them.

cricketTeam_info.java:


<?xml version="1.0" encoding="UTF-8"?>

<cricketers>
	<cricketer type="righty">
		<name>MS Dhoni</name>
		<role>Captain</role>
		<position>Wicket-Keeper</position>
	</cricketer>
	<cricketer type="lefty">
		<name>Shikhar Dhawan</name>
		<role>Batsman</role>
		<position>Point</position>
	</cricketer>
	<cricketer type="righty">
		<name>Virat Kohli</name>
		<role>Batsman</role>
		<position>cover</position>
	</cricketer>
	<cricketer type="righty">
		<name>Shami</name>
		<role>Bowler</role>
		<position>SquareLeg</position>
	</cricketer>
	<cricketer type="lefty">
		<name>Zaheer Khan</name>
		<role>Bowler</role>
		<position>FineLeg</position>
	</cricketer>
</cricketers>

1. substring(String target, int startingindex, int length)

Substring(target, startindex, length, ) method returns the sub-string of the target string from the start-index to the length specified. If the length argument is not provided, it returns the string from the start-index specified to the last character of the target string.


XPathExpression expr = xpath.compile("substring(//cricketer[name='MS Dhoni']/position,'1','4')");
String substr = (String) expr.evaluate(doc, XPathConstants.STRING);
System.out.println("The substring of Wicket is : " + substr );

Output:


The substring  of Wicket is : Wick

The target string here is ‘wicket-keeper‘. By passing 1,4 we are extracting the characters from 1st to 4th position of the target string.

NOTE:
Unlike in Java, the XPath string index starts with 1.

2. substring-before(String target, String tosearch)

The substring-before is used to extract the substring of the target occurring before an occurrence of the string passed as toSearch argument. Lets look at an example to understand this :


expr = xpath.compile("substring-before(//cricketer[name='MS Dhoni']/position,'-Keeper')");
String substrbefore = (String) expr.evaluate(doc, XPathConstants.STRING);
System.out.println("The substring before Keeper is : " + substrbefore);

Output:


The substring before Keeper is : Wicket

The string occurring prior to “-Keeper” in “Wicket-Keeper” is returned by the substring-before method.

3. substring-after(String target, String tosearch)

This method works exactly opposite of the substring-before method. It returns the substring after the tosearch string till the end of the target string.

expr = xpath.compile("substring-after(//cricketer[name='MS Dhoni']/position,'Wicket-')");
String substrafter = (String) expr.evaluate(doc, XPathConstants.STRING);
System.out.println("The substring after Keeper is : " + substrafter);

Output:


The substring after Keeper is : Keeper

The substring-after returns the substring after the “Wicket“, which is “keeper“.

XpathSubStringDemo.java:


import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.xpath.XPath;
import javax.xml.xpath.XPathConstants;
import javax.xml.xpath.XPathExpression;
import javax.xml.xpath.XPathFactory;

import org.w3c.dom.Document;


public class XpathSubStringDemo
{
	public static void main(String[] args) throws Exception
	{

		DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
		documentBuilderFactory.setNamespaceAware(true);
		DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();
		Document doc = documentBuilder.parse("src/cricketTeam_info.xml");

		XPathFactory xpathFactory = XPathFactory.newInstance();
		XPath xpath = xpathFactory.newXPath();

		//XPath subtring example
		XPathExpression expr = xpath.compile("substring(//cricketer[name='MS Dhoni']/position,'1','4')");
		String substr = (String) expr.evaluate(doc, XPathConstants.STRING);
		System.out.println("The substring before Keeper is : " + substr);

		// XPath subtring-before example
		expr = xpath.compile("substring-before(//cricketer[name='MS Dhoni']/position,'-Keeper')");
		String substrbefore = (String) expr.evaluate(doc, XPathConstants.STRING);
		System.out.println("The substring before Keeper is : " + substrbefore);


		// XPath subtring-after example
		expr = xpath.compile("substring-after(//cricketer[name='MS Dhoni']/position,'Wicket-')");
		String substrafter = (String) expr.evaluate(doc, XPathConstants.STRING);
		System.out.println("The substring after Keeper is : " + substrafter);


	}
}

4. Conclusion:

Here we studied the sub-string method and how to use them.

Download
You can download the source code of this example here: XpathSubStringDemo.zip

Chandan Singh

Chandan holds a degree in Computer Engineering and is a passionate software programmer. He has good experience in Java/J2EE Web-Application development for Banking and E-Commerce Domains.
Subscribe
Notify of
guest

This site uses Akismet to reduce spam. Learn how your comment data is processed.

0 Comments
Inline Feedbacks
View all comments
Back to top button