[xpath] XPath using starts-with function

I'm writing Java on Android to retrieve data from XML file, but I've got a problem. Consider this XML:

<ITEM>
   <REVENUE_YEAR>2554-02</REVENUE_YEAR>
   <REGION>Central</REGION>
</ITEM>
<ITEM>
  <REVENUE_YEAR>2552-02</REVENUE_YEAR>
  <REGION>Central</REGION>
</ITEM>
<ITEM>
  <REVENUE_YEAR>2552-03</REVENUE_YEAR>
  <REGION>Central</REGION>
</ITEM>

How can I get all elements in years that start-with 2552. I tried:

//REVENUE_YEAR[starts-with(.,'2552')]/text()

It works, but when I tried:

//REVENUE_YEAR[starts-with(.,'2552')]/REGION/text() 

it doesn't work.

This question is related to xpath

The answer is


Try this

//ITEM/*[starts-with(text(),'2552')]/following-sibling::*

Use:

//REVENUE_YEAR[starts-with(.,'2552')]/../REGION/text() 

Use:

/*/ITEM[starts-with(REVENUE_YEAR,'2552')]/REGION

Note: Unless your host language can't handle element instance as result, do not use text nodes specially in mixed content data model. Do not start expressions with // operator when the schema is well known.