I'm trying to use XPath to extract a node from a XML file, by looking for a specific value in one of its subnodes.
I have a XML file from this location: Hourly forecasts for selected locations
Here is a part from it:
<HourlyLocationsForecast>
<Identification>
<Organization>Israel Meteorological Service</Organization>
<Title>Hourly forecasts for selected locations</Title>
<IssueDateTime>Tue Dec 10 06:30:40 IST 2019</IssueDateTime>
</Identification>
<Location>
<LocationMetaData>
<LocationName>AFULA NIR HAEMEQ</LocationName>
<LocationLatitude>32.596</LocationLatitude>
<LocationLongitude>35.277</LocationLongitude>
<LocationHeight>60</LocationHeight>
</LocationMetaData>
<LocationData>
<Forecast>
<ForecastTime>10/12/2019 04:00 UTC</ForecastTime>
<Temperature>11.3</Temperature>
<RelativeHumidity>100</RelativeHumidity>
<WindSpeed>1.4</WindSpeed>
<WindDirection>34</WindDirection>
</Forecast>
<Forecast>
<ForecastTime>10/12/2019 05:00 UTC</ForecastTime>
<Temperature>11.7</Temperature>
<RelativeHumidity>100</RelativeHumidity>
<WindSpeed>1.5</WindSpeed>
<WindDirection>31</WindDirection>
</Forecast>
<Forecast>
<ForecastTime>10/12/2019 06:00 UTC</ForecastTime>
<Temperature>13.8</Temperature>
<RelativeHumidity>100</RelativeHumidity>
<WindSpeed>1.3</WindSpeed>
<WindDirection>27</WindDirection>
</Forecast>
</LocationData>
</Location>
<Location>
<LocationMetaData>
<LocationName>AVDAT</LocationName>
<LocationLatitude>30.788</LocationLatitude>
<LocationLongitude>34.771</LocationLongitude>
<LocationHeight>555</LocationHeight>
</LocationMetaData>
<LocationData>
<Forecast>
<ForecastTime>10/12/2019 04:00 UTC</ForecastTime>
<Temperature>10.5</Temperature>
<RelativeHumidity>95</RelativeHumidity>
<WindSpeed>1.2</WindSpeed>
<WindDirection>238</WindDirection>
</Forecast>
<Forecast>
<ForecastTime>10/12/2019 05:00 UTC</ForecastTime>
<Temperature>11.6</Temperature>
<RelativeHumidity>91</RelativeHumidity>
<WindSpeed>1.4</WindSpeed>
<WindDirection>251</WindDirection>
</Forecast>
<Forecast>
<ForecastTime>10/12/2019 06:00 UTC</ForecastTime>
<Temperature>13.9</Temperature>
<RelativeHumidity>83</RelativeHumidity>
<WindSpeed>1.5</WindSpeed>
<WindDirection>258</WindDirection>
</Forecast>
</LocationData>
</Location>
<Location>
<LocationMetaData>
<LocationName>BEER SHEVA</LocationName>
<LocationLatitude>31.251</LocationLatitude>
<LocationLongitude>34.799</LocationLongitude>
<LocationHeight>279</LocationHeight>
</LocationMetaData>
<LocationData>
<Forecast>
<ForecastTime>10/12/2019 04:00 UTC</ForecastTime>
<Temperature>12.2</Temperature>
<RelativeHumidity>98</RelativeHumidity>
<WindSpeed>0.7</WindSpeed>
<WindDirection>136</WindDirection>
</Forecast>
<Forecast>
<ForecastTime>10/12/2019 05:00 UTC</ForecastTime>
<Temperature>12.6</Temperature>
<RelativeHumidity>95</RelativeHumidity>
<WindSpeed>0.7</WindSpeed>
<WindDirection>145</WindDirection>
</Forecast>
</LocationData>
</Location>
</HourlyLocationsForecast>
I want to extract full weather forecast just for a specific city. The city name is stored under /Location/LocationMetaData/LocationName, while the actuael data is under /Location/LocationData.
After looking at this question: XPath: Select first element with a specific attribute, I tried to use this XPath string:
//HourlyLocationsForecast/Location[@LocationMetaData/LocationName='JERUSALEM CENTRE']
I assumed I can relate to a value in a subnode as well as a value of an attribute in the node itself.
I get 'No Match' as an answer.
What am I doing wrong?