Reputation: 655
I have xml file that I want to search for a word say searchTearm and then want to return names of tags surrounding that search term. ex :- in below case searchTerm is surrounded by tags namespace, querySubject and queryItem, I am trying to return name of these tags. Name is enclosed in name tag.
Any help with single line xpath for this:
<namespace>
<name locale="en">Test</name>
<lastChanged>2016-01-12T12:42:46</lastChanged>
<namespace><name locale="en">Database Layer</name>
<querySubject status="valid"><name locale="en">qsxyz</name>
<queryItem><name locale="en">qixyz</name>
<>...searchTerm..</>
</queryItem>
</querySubject>
</namespace>
</namespace>
below xpath doesn't seem to work :-
/namespace/namespace/querysubject/queryItem[contains(., 'searchTerm')]
Upvotes: 1
Views: 74
Reputation: 26153
if i understood correctly
/namespace/namespace/querySubject/queryItem[contains(., 'searchTerm')]/ancestor-or-self::*/name
selects name
tags for all ancestor of queryItem
with searchTerm
result
Element='<name locale="en">Test</name>'
Element='<name locale="en">Database Layer</name>'
Element='<name locale="en">qsxyz</name>'
Element='<name locale="en">qixyz</name>'
if you add trailing /text()
you will receive not elements but there values
Upvotes: 1